我有一个使用AWS Lambda部署的无服务器应用程序。我使用java8作为语言,也使用Dagger for DI。我正在调用的依赖项之一具有多个可以使用的终结点(它具有多个终结点的概念以确保可用性)。
现在,此应用程序需要使用地理位置上接近的端点来调用下游服务。我有一种方法可以根据地理距离返回最接近的端点。我试图了解如何使Dagger模块定期“刷新”,以便能够将其重定向到正确的端点?我下面有一些相关的代码来说明用例。
@Provider
@Singleton
public MyDownstreamClient downstreamClient() {
String endpointUrl = getClosestEndpoint();
return MyDownstreamClient.builder()
.endpoint(endpointURL) <-- This will change often based on the closest endpoint
.arguments(someArguments)
.build();
}
现在,我试图了解如何动态生成该endpointURL。我的困惑在于,由于并非在每个API调用/请求上都调用Dagger提供程序,因此它将选择相同的端点。我研究了在实际业务逻辑中实例化客户端的想法,这似乎太昂贵了。
我试图了解是否存在一种方法可以强制Dagger模块定期进行某种形式的刷新?那有可能吗?