Я использую ReactiveFeignClient от Playtika. Мне нужно использовать динамический URL-адрес, особенно для части хоста, потому что я хотите использовать один и тот же интерфейс для нескольких служб, которые имеют одинаковые форматы запросов и ответов, но разные хосты. URL-адреса каждой службы могут иметь разные имя хоста и префикс, но все они имеют один и тот же суффикс. Например:
- http: // localhost: 3001 / игры / покупка
- http: // localhost: 3002 / гаджеты / телефон / покупка
На самом деле я не знаю, ведет ли он то же самое, что и нереактивный симулирующий клиент. Я следую предложению Как я могу изменить фиктивный URL во время выполнения?.
Вот клиентский интерфейс.
@ReactiveFeignClient(
name = "dummy",
configuration = TransactionClient.Configuration.class
)
public interface TransactionClient {
// @PostMapping("/purchase") // Using @PostMapping and @RequestLine both don't work
@RequestLine("POST /purchase")
Mono<PurchaseResponseDto> doPurchase(
URI baseUrl,
@Valid @RequestBody PurchaseRequestDto requestDTO
);
@RequiredArgsConstructor
class Configuration {
@Bean
public ReactiveStatusHandler reactiveStatusHandler() {
return new CustomStatusHandler();
}
}
}
А вот и автоконфигурация
@Configuration
public class TransactionClientServiceAutoConfiguration {
@Bean
public Contract useFeignAnnotations() {
return new Contract.Default();
}
@Bean
@LoadBalanced
public TransactionClient botRemoteClient() {
return Feign.builder().target(Target.EmptyTarget.create(TransactionClient.class));
}
}
Однако я получил ошибку, указывающую, что нет службы с фиктивным именем. На самом деле это просто фиктивное имя, потому что параметр имени требуется для аннотации @ReactiveFeignClient, и я хочу использовать интерфейс для нескольких служб.
Как сделать возможным динамический URL-адрес для @ReactiveFeignClient