Контекст клиента для запланированной задачи Spring - Cloud Foundry - PullRequest
1 голос
/ 24 сентября 2019

У нас есть задание, которое запускается через планировщик Spring ( @ Scheduled ).Задача / вызываемая здесь должна выполняться в определенном контексте клиента .Это не вызывается через HTTP-запрос, поэтому мы не можем получить контекст клиента напрямую из URL.В SCP Neo задание использует API-интерфейс TenantContext следующим образом: String result = tenantContext.execute (tenant.getTenantId (), new MeteringJobExecutor ()); , где MeteringJobExecutor - это вызываемый объект, который должен выполняться для определенногоtenant.

  • Что является альтернативой для TenantContext API в CF?
  • Как мы выполняем такие задачи?

Нам нужен подход, с помощью которого мы можем сосуществовать как в Neo, так и в CF с минимальным изменением дизайна.

1 Ответ

1 голос
/ 27 сентября 2019

Одним из решений может быть использование 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();
});

Где лямбда-выражение - этовызываемый метод для арендатора.

Я надеюсь, что это работает для вас.

Привет, Танви

...