首页 > 解决方案 > 在 AWS lambda 中使用 Dagger 并定期刷新模块

问题描述

我有一个使用 AWS Lambda 部署的无服务器应用程序。我使用 java8 作为我的语言,因为我也使用 Dagger 进行 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 模块以某种方式定期刷新?有这种可能吗?

标签: javaaws-lambdadagger

解决方案


推荐阅读