我正在使用来自 Playtika 的 ReactiveFeignClient 我需要使用动态 URL,尤其是对于主机部分,因为我想对具有相同请求和响应格式但主机不同的多个服务使用相同的接口。每个服务上的 URL 可以有不同的主机名和前缀,但都具有相同的后缀。例如:
- http://localhost:3001/games/purchase
- http://localhost:3002/gadgets/phone/purchase
实际上我不知道它是否具有与非反应式 feign 客户端相同的行为。我遵循关于如何在运行时更改假冒 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));
}
}
但是,我收到错误消息,表明没有名称为 dummy 的服务。这确实只是一个虚拟名称,因为 @ReactiveFeignClient 注释需要 name 参数,我想将该接口用于多个服务。
如何使@ReactiveFeignClient 的动态网址成为可能