问题描述
我目前正在尝试将 Java 应用程序(在本地运行)连接到 SAP 事件网格,以接收某些 SAP 系统发布的消息。
{
"namespace": ":)","xsappname": ":)","management": [
{
"oa2": {
"clientid": ":)","clientsecret": ":)","tokenendpoint": "https://whatever.authentication.eu20.hana.ondemand.com/oauth/token","granttype": "client_credentials"
},"uri": "https://em-hub-backend.cfapps.eu20.hana.ondemand.com"
}
],"serviceinstanceid": ":)","messaging": [
{
"oa2": {
"clientid": ":)","protocol": [
"amqp10ws"
],"broker": {
"type": "sapmgw"
},"uri": "wss://em-messaging-gateway.cfapps.eu20.hana.ondemand.com/protocols/amqp10ws"
},{
"oa2": {
"clientid": ":)","protocol": [
"mqtt311ws"
],"uri": "wss://em-messaging-gateway.cfapps.eu20.hana.ondemand.com/protocols/mqtt311ws"
},"protocol": [
"httprest"
],"broker": {
"type": "saprestmgw"
},"uri": "https://em-pubsub.cfapps.eu20.hana.ondemand.com"
}
]
}
根据 SAP 帮助页面,有 3 种支持的协议 (https://help.sap.com/viewer/bf82e6b26456494cbdd197057c09979f/Cloud/en-US/3f424ff1ae3b4bc084c4f1ea0be96f54.html)
- 基于 WebSocket 的高级消息队列协议 (AMQP) 1.0
- 基于 WebSocket 的消息队列遥测传输 (MQTT) 3.1.1
- 用于消息传递的 REST API
我猜 REST API 的性能很差。所以我会通过 WS 选择 AMQP 或 MQTT。 很难找到支持 AMQP 或 MQTT 以及安全 websockets 和 oauth 身份验证的 java 客户端库。
我已经看过 SAP 云 sdk。但功能概述告诉我消息传递仍处于计划状态,这意味着它尚不可用。
你有什么建议我可以在这里取得进展吗?
解决方法
UPD:我的同事推荐 XBEM library 是当前 SAP 事件消费的最佳选择。 CAP 和 SDK 的库在其基础上增加了便利性。在此处查看更多docs。
SAP Cloud SDK 为 S/4HANA 的企业事件网格提供了实验性支持,但它已被 CAP 停止支持实施。他们承诺发布一个可以用作依赖项的库,以简化 Java 和 Node.js 的事件消耗。似乎比承诺的时间更长,请参阅屏幕截图中的当前状态:
当库发布时,SDK 计划通过类型安全的事件访问提供额外的便利。目前,这是不可能的,因为没有普遍可用的版本。
如果您只有一个租户应用程序,您仍然可以试用 CAP 的库。作为参考,请咨询他们的 docs
如果您希望在 SAP Cloud SDK 中获得企业事件网格支持,请创建一个功能请求 here。