如何使用 S4 Cloud SDK 连接访问 RabbitMQ 后面的目标服务
How to access destination service which is behind RabbitMQ using S4 Cloud SDK Connectivity
我们正在使用 S4SDK 访问目标服务。它需要在多租户环境中工作。通常,如果应用程序是前端应用程序,则请求上下文由用户请求触发。使用 approuter 和 XUAA 可以使用多租户访问目标服务。
在我们的例子中,我们的应用程序位于 RabbitMQ 之后,它不是由用户请求触发的(例如 REST API 调用)。目前我们正在使用云 SDK 中的 class com.sap.cloud.sdk.cloudplatform.connectivity.DestinationAccessor。我们可以从消息中检索租户 ID (RabbitMQ/AMQP)。问题是我们找不到从 S4SDK 将租户 ID 注入或将 JWT 令牌克隆到 DestinationAccessor 的方法。我们正在寻找 way/guidance 如何实现这一点。我们希望此 exchange/clone 令牌由 SDK 提供。
您应该可以使用 JwtBasedRequestContextExecutor 来达到这个目的。
new JwtBasedRequestContextExecutor()
.withJwt(encodedJwt)
.execute(() -> {
// code using the SAP Cloud SDK
});
我们正在使用 S4SDK 访问目标服务。它需要在多租户环境中工作。通常,如果应用程序是前端应用程序,则请求上下文由用户请求触发。使用 approuter 和 XUAA 可以使用多租户访问目标服务。 在我们的例子中,我们的应用程序位于 RabbitMQ 之后,它不是由用户请求触发的(例如 REST API 调用)。目前我们正在使用云 SDK 中的 class com.sap.cloud.sdk.cloudplatform.connectivity.DestinationAccessor。我们可以从消息中检索租户 ID (RabbitMQ/AMQP)。问题是我们找不到从 S4SDK 将租户 ID 注入或将 JWT 令牌克隆到 DestinationAccessor 的方法。我们正在寻找 way/guidance 如何实现这一点。我们希望此 exchange/clone 令牌由 SDK 提供。
您应该可以使用 JwtBasedRequestContextExecutor 来达到这个目的。
new JwtBasedRequestContextExecutor()
.withJwt(encodedJwt)
.execute(() -> {
// code using the SAP Cloud SDK
});