У меня есть серверное приложение, развернутое с помощью 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 может генерироваться динамически.Я путаюсь с тем фактом, что, поскольку провайдер Dagger не вызывается при каждом вызове / запросе API, он выбирает одну и ту же конечную точку.Я изучил идею создания клиента внутри моей реальной бизнес-логики, и это казалось слишком дорогим.
Я пытаюсь понять, можно ли каким-то образом заставить модуль Dagger периодически обновляться каким-либо образом?Это возможно?