在微服务中注入两个WebClient bean是必不可少的吗?一个用于客户端负载平衡(Eureka,Ribbon),另一个用于请求第三方的API。
当我只注入一个@LoadBalanced Webcliet时,我得到了这样的响应。阅读官方指南后,我就知道了原因。
2019-05-29 23:03:35.440 WARN 21818 --- [ctor-http-nio-2] c.l.r.LoadBalancerExchangeFilterFunction:负载均衡器不包含服务XXX的实例
当然,如果有两个WebClient bean,它会很好地工作。
PUT
我是否可以在Eureka Server,Eureka Client或Ribbon中进行一些配置,以便直接与第三方的API交互?
感谢您的帮助。
答案 0 :(得分:0)
您可以使用限定符在应用中同时具有负载均衡和非负载均衡WebClient
,就像这样:
@Configuration
public class WebClientConfig {
@Bean
@LoadBalanced
@Qualifier("loadBalancedWebClient")
WebClient.Builder loadBalancedWebClientBuilder() {
return WebClient.builder();
}
@Bean
@Qualifier("webClient")
WebClient.Builder webClientBuilder() {
return WebClient.builder();
}
}
,然后您可以通过@Qualifier
注入它:
@Component
public class VerificationServiceClient {
private final WebClient.Builder webClientBuilder;
VerificationServiceClient(@Qualifier("loadBalancedWebClient") WebClient.Builder webClientBuilder) {
this.webClientBuilder = webClientBuilder;
}