Spring Scheduled任务的租户上下文-Cloud Foundry

时间:2019-09-24 11:21:26

标签: cloudfoundry sap-cloud-platform sap-cloud-sdk

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

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

我们需要一种在最小的设计更改下就可以在Neo和CF上共存的方法。

1 个答案:

答案 0 :(得分: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表达式是租户上的可调用方法。

我希望这对您有用。

问候, 坦维