CAP中的企业消息传递

2020-08-17 00:13发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好,我在Cloud Platform中创建了一个企业消息传递实例,如何在使用Cloud Application Programming Model(CAP)构建的应用程序中使用它。 接下来需要做什么?

欢迎任何潜在客户。

谢谢。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好,我在Cloud Platform中创建了一个企业消息传递实例,如何在使用Cloud Application Programming Model(CAP)构建的应用程序中使用它。 接下来需要做什么?

欢迎任何潜在客户。

谢谢。

付费偷看设置
发送
7条回答
派大星 ヾ
1楼 · 2020-08-17 00:41.采纳回答

嗨,

您需要执行以下步骤(假设您在Cloud Foundry中拥有生产性帐户):

*将CAP应用程序绑定到msg实例(->清单) .yml)
*在package.json中,将条目添加到cds-requires部分:

" cds":
 {
 "要求":
 {
 " anyMessagingName":
 {
 "类":
 "企业消息传递","凭证":{
 "命名空间":
 " my/own/ns" 

选择的名称(anyMessagingName)将在代码中引用
CAP将使用"命名空间"(my/own/ns)来生成队列

确保命名空间符合创建消息实例时定义的主题规则

< p> *在您的自定义代码处理程序中,您连接到例如 " anyMessagingName"
*发射示例:

 const msg =
 cds.connect.to('anyMessagingName')
 const有效负载=
 {
 "名字":
 "我的名字",
 " theChangeId":
 " 123"
 } 
 msg.emit('myEventName',有效负载)

*以消耗事件/resp消息,您以相同的方式配置消耗CAP应用程序
*在自定义代码中,您可以连接 对声明的anyMessagingName进行处理的方式与对事件做出反应的方式相同,您编写的自定义处理程序代码与以前使用的处理程序代码相同。对于企业消息传递,有一个区别:您指定了一个主题。 在生产性帐户中,这与命名空间串联在一起:

 const msg = cds.connect.to('anyMessagingName')
 msg.on('my/own/ns/BO/BusinessPartner/Changed',async(msg)=> {
 

一旦您了解并配置了它,就很容易使用;-)

亲切的问候

Carlos

BTW,这是 到文档的链接: https://cap.cloud.sap/docs/guides/consumption- 服务#发射事件

黑丝骑士
2楼-- · 2020-08-17 00:49

感谢卡洛斯,

如何配置我们的CAP应用程序以使用我们的服务发出的事件,您能否解释一下连接是如何发生的,以便我们对流程有清晰的了解。

Violet凡
3楼-- · 2020-08-17 01:05
d56caomao
4楼-- · 2020-08-17 01:06

嗨,卡洛斯,

如果因为您位于不同的空间而无法绑定到消息传递服务,该怎么办。 您需要使用de clientid和secret。 您如何在package.json

中进行设置

感谢进阶

Erik

黑丝骑士
5楼-- · 2020-08-17 01:00

又一个附录:

自CAP版本3.30起,API稍有变化:

我们不需要连接 到新的消息传递配置

,相反,我们将自己的服务配置如下

package.json:

" cds":{
     "要求":{
       "邮件":{
         " kind":"企业消息传递"
       }
     }
   },
 

service.js

无需连接。

只需使用srv实例

 module.exports = cds.service.impl(  (srv)=> {
  
   srv.on('company/customer/care/demo/customer/created',async(msg)=> {
     const messagePayload = JSON.stringify(msg.data)
     console.log('===>收到的消息:'+ messagePayload)
   })
 

并发送:

 const message = {
     'myProp':'正在发送消息。
   }
   const topic ='公司/客户/护理/演示/客户/创建的'
   srv.emit(主题,消息)
 
Bunny_CDM
6楼-- · 2020-08-17 00:42

您好E。 Palmen ,我认为目前无法解决,因为FWK从绑定中读取内容,因此需要绑定,如果未绑定则需要在部署期间失败
您可以做的是手动使用amqp lib

亲切的问候,卡洛斯

callcenter油条
7楼-- · 2020-08-17 00:59

嗨,正如我提到的,配置是相同的:

" cds":{
 " requires":{" anyMessagingName":{" kind":"企业邮件","凭证":{" namespace":" my/own/ns" 

,在JavaScript中, 连接:

 const msg = cds.connect.to('anyMessagingName')

,然后添加事件监听器

 msg.on('my/own/ns/BO/BusinessPartner/Changed',异步(msg)=> {
 msg包含消息,使用
 msg.data 

我想发布博客,但抱歉,这需要时间

干杯,

卡洛斯

一周热门 更多>