问题描述
我们希望为客户提供配置弹性的选项,例如断路器配置。请告知我们是否可以通过某种方式在 Cloud SDK 中提供特定于租户的配置。
解决方法
假设您要为 CloudFoundry 目标服务中配置的目标调用 SAP BusinessPartner service (OData V2),名称为“MyDestination”。
那么您的代码将与 SAP Cloud SDK 类似:
HttpDestination destination = DestinationAccessor.getDestination("MyDestination").asHttp();
BusinessPartnerService service = new DefaultBusinessPartnerService();
List<BusinessPartner> items = service
.getAllBusinessPartner()
.top(10)
.executeRequest(destination);
如果您想将弹性功能应用于 OData 请求,则它看起来像这样:
HttpDestination destination = DestinationAccessor.getDestination("MyDestination").asHttp();
BusinessPartnerService service = new DefaultBusinessPartnerService();
ResilienceConfiguration configuration = ResilienceConfiguration.of("ten-businesspartners");
List<BusinessPartner> items = ResilienceDecorator.executeSupplier(
() -> service.getAllBusinessPartner().top(10).executeRequest(destination),configuration);
您可以在运行时根据需要自定义 ResilienceConfiguration
的实例,例如断路器的阈值,像这样(使用默认值):
ResilienceConfiguration.of("ten-businesspartners")
.circuitBreakerConfiguration(ResilienceConfiguration.CircuitBreakerConfiguration.of()
.waitDuration(Duration.ofSeconds(10))
.closedBufferSize(10)
.failureRateThreshold(50)
.halfOpenBufferSize(5)
);
,
我们已经尝试了多租户方法来实现弹性。但是对于我们的场景,我们甚至在客户系统(操作系统)中使用弹性方法,在这些系统中,客户要求根据他们的情况提供灵活性来决定诸如 slowCallRate 等参数。我们想知道是否需要将 CircuitBreaker 的配置具体化给客户,以便他们可以根据自己的设置更改某些值,我们该怎么做?
谢谢 萨加尔