WebClient代替openfeign


前言

在Spring Cloud项目中,通常我们会使用Spring Cloud OpenFeign来实现服务间的相互调用,但当我们在项目中用到webflux框架时,openfeign阻塞请求,导致程序报错,原因:openfeign并不支持Reactive。解决方法:使用WebClient+loadbalance代替open feign。

关键代码

TestAppClient.java

package show.lmm.invokeapp.core.client;

import org.springframework.cloud.client.loadbalancer.reactive.ReactorLoadBalancerExchangeFilterFunction;
import org.springframework.stereotype.Component;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono;

@Component
public class TestAppClient {

    private final WebClient webClient;

    public TestAppClient(
            ReactorLoadBalancerExchangeFilterFunction lbFunction
    ) {
        this.webClient = WebClient.builder()
                .filter(lbFunction).build();
    }

    public Mono<String> getServerInfo(String info) {
        final String url = String.format("http://test-app/test/get/server_info?info=%s",info);
        return webClient.get().uri(url)
                .retrieve().bodyToMono(String.class);
    }
}

示例

https://gitee.com/luoye/examples/tree/main/webflux_webclient_loadbalance


文章作者: Ming Ming Liu
文章链接: https://www.lmm.show/28/
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Ming Ming Liu !
  目录