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超时配置