springcloud编程语言爱好者Java

OpenFeign实现负载均衡代码演示

2021-11-13  本文已影响0人  迦叶_金色的人生_荣耀而又辉煌

上一篇 <<<RestTemplate+loadBalancer实现负载均衡代码演示及源码分析
下一篇 >>>Feign超时配置


SpringCloudAlibaba中使用OpenFeign时,默认的负载均衡策略是轮询调用。项目启动的时候,会用LoadBalancerFeignClient注册一个feign.Client到ioc容器中,FeignClientFactoryBean会生成一个@FeignClient注解的对应的service实例。

生产者配置

server:
  port: 8089
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 10.211.55.16:8848
        #feign客户端的命名必须使用中划线,不能使用下划线
  application:
    name: openfeign-user-service

生产者代码

生产者接口:
public interface UserService {

    /**
     * feign默认是post请求,所以这个地方必须使用RequestParam注解
     * @param userId
     * @return
     */
    @RequestMapping("/getUser")
    String getUser(@RequestParam("userId") Long userId);
}

生产者实现:
@RestController
public class UserServiceImpl implements UserService {
    @Value("${server.port}")
    private String serverPort;

    @Override
    public String getUser(Long userId) {
        return "会员服务端口:"+serverPort+" 请求参数:"+userId;
    }
}

消费者配置

@FeignClient("openfeign-user-service")
public interface UserServiceFeign extends UserService {

}

@RestController
public class OrderService {

    @Autowired
    private UserServiceFeign userServiceFeign;

    @GetMapping("/orderToMember")
    public String orderToMember() {
        String result = userServiceFeign.getUser(10L);
        return "我是订单服务,调用会员服务接口返回结果:" + result;
    }
}

启动类:
@SpringBootApplication
@EnableFeignClients
public class OpenfeignOrderApp {
    public static void main(String[] args) {
        SpringApplication.run(OpenfeignOrderApp.class);
    }
}

openfeign底层用的也是ribbon负载均衡组件


推荐阅读:
<<<本地负载均衡和nginx负载均衡
<<<SpringCloud中负载均衡客户端的使用
<<<如何选择ribbon还是loadbalancer
<<<feign和openfeign的区别
<<<RestTemplate+loadBalancer实现负载均衡代码演示及源码分析
<<<Feign超时配置

上一篇下一篇

猜你喜欢

热点阅读