1

我们有一个通过 Spring Scheduler ( @Scheduled ) 运行的作业。此处的任务/可调用应在特定租户上下文中执行。这不是通过 HTTP 请求调用的,因此我们无法直接从 URL 获取租户上下文。在 SCP Neo 中,作业像这样使用 TenantContext API - String result = tenantContext.execute(tenant.getTenantId(), new MeteringJobExecutor()); 其中 MeteringJobExecutor 是需要为特定租户执行的可调用对象。

  • CF 中 TenantContext API 的替代方案是什么?
  • 我们如何执行这些任务?

我们需要一种方法,通过这种方法我们可以在 Neo 和 CF 上共存,而设计更改最少。

4

1 回答 1

1

一种解决方案可能是为此使用 SAP Cloud SDK。由于 Cloud SDK 提供对 Neo 和 CF 的支持。使用 SDK,您可以通过以下方式实现上述目标:

对于 CF 上的租户:

TenantAccessor.executeWithTenant( new ScpCfTenant( "tenantname", "tenant.domain"),() -> {
    TenantAccessor.getCurrentTenant().getTenantId();
});

对于 Neo 上的租户:

TenantAccessor.executeWithTenant( new ScpNeoTenant(tenantContext), () -> {
    TenantAccessor.getCurrentTenant().getTenantId();
});

其中 lambda 表达式是租户的可调用方法。

我希望这对你有用。

问候,坦维

于 2019-09-27T07:51:08.510 回答