首页 > 解决方案 > 将 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

我猜 REST API 的性能很差。所以我会选择 AMQP 或 MQTT over WS。找到一个支持 AMQP 或 MQTT 以及安全 websockets 和 oauth 身份验证的 java 客户端库有点困难。

我已经看过 SAP cloud sdk。但是功能概述告诉我消息传递仍处于计划状态,这意味着它还不可用。

你有什么建议我可以在这里取得进展吗?

标签: spring-bootsap-cloud-platformsap-cloud-sdk

解决方案


UPD:我的同事推荐XBEM 库是目前 SAP 事件消费的最佳选择。CAP 和 SDK 的库在其之上增加了便利性。在此处查看更多文档

SAP Cloud SDK为 S/4HANA的企业事件网格提供了实验性支持,但由于CAP的实施而停止使用。他们承诺发布一个可用作依赖项的库,以简化 Java 和 Node.js 的事件消耗。它似乎比承诺的要花更长的时间,请在屏幕截图中查看当前状态: 在此处输入图像描述

当库发布时,SDK 计划通过类型安全的事件访问来提供额外的便利。目前,这是不可能的,因为没有普遍可用的版本。

如果您只有一个租户应用程序,您仍然可以试用 CAP 的库。参考他们的文档

如果您想在 SAP Cloud SDK 中获得 Enterprise Events 网格支持,请在此处创建功能请求。


推荐阅读