spring-boot - 将 java spring boot 应用程序连接到 SAP 事件网格 (BTP)
问题描述
我目前正在尝试将 Java 应用程序(在本地运行)连接到 SAP 事件网格,以接收某些 SAP 系统发布的消息。
同事们提供了一个带有凭据和端点的 json 文件:
{
"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": ":)",
"clientsecret": ":)",
"tokenendpoint": "https://whatever.authentication.eu20.hana.ondemand.com/oauth/token",
"granttype": "client_credentials"
},
"protocol": [
"amqp10ws"
],
"broker": {
"type": "sapmgw"
},
"uri": "wss://em-messaging-gateway.cfapps.eu20.hana.ondemand.com/protocols/amqp10ws"
},
{
"oa2": {
"clientid": ":)",
"clientsecret": ":)",
"tokenendpoint": "https://whatever.authentication.eu20.hana.ondemand.com/oauth/token",
"granttype": "client_credentials"
},
"protocol": [
"mqtt311ws"
],
"broker": {
"type": "sapmgw"
},
"uri": "wss://em-messaging-gateway.cfapps.eu20.hana.ondemand.com/protocols/mqtt311ws"
},
{
"oa2": {
"clientid": ":)",
"clientsecret": ":)",
"tokenendpoint": "https://whatever.authentication.eu20.hana.ondemand.com/oauth/token",
"granttype": "client_credentials"
},
"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 的性能很差。所以我会选择 AMQP 或 MQTT over WS。找到一个支持 AMQP 或 MQTT 以及安全 websockets 和 oauth 身份验证的 java 客户端库有点困难。
我已经看过 SAP cloud sdk。但是功能概述告诉我消息传递仍处于计划状态,这意味着它还不可用。
你有什么建议我可以在这里取得进展吗?
解决方案
UPD:我的同事推荐XBEM 库是目前 SAP 事件消费的最佳选择。CAP 和 SDK 的库在其之上增加了便利性。在此处查看更多文档。
SAP Cloud SDK为 S/4HANA的企业事件网格提供了实验性支持,但由于CAP的实施而停止使用。他们承诺发布一个可用作依赖项的库,以简化 Java 和 Node.js 的事件消耗。它似乎比承诺的要花更长的时间,请在屏幕截图中查看当前状态:
当库发布时,SDK 计划通过类型安全的事件访问来提供额外的便利。目前,这是不可能的,因为没有普遍可用的版本。
如果您只有一个租户应用程序,您仍然可以试用 CAP 的库。参考他们的文档
如果您想在 SAP Cloud SDK 中获得 Enterprise Events 网格支持,请在此处创建功能请求。
推荐阅读
- javascript - 如何更改日期选择器中的日期格式
- python - 寻找一种在 Python 3 中将字典写入 csv 的方法
- javascript - 如何使用 flexbox 在 div 中显示内容
- javascript - JS - 删除相同类型的每个对象
- javascript - 聚合物项目硫化时,Amazon s3 上传失败
- apache - 如何以编程方式安装 wampapache64
- c++ - 终端清除功能在 C++ 中对我不起作用
- python - 基于 websockets 的 Python shell
- r - 逻辑回归中的总体检验显着性
- azure-devops - AzDO YAML 管道,在舞台上触发完成