• 基于OpenFeign实现服务调用


    我们之前使用ribbon完成负载均衡有什么缺点:  restTemplate---url地址。

    ①代码可读性比较差

    ②编码风格和我们习惯的不同,习惯的编码风格service 调用dao  service中注入dao,dao对象调用相应的方法

    1、什么是OpenFeign

    OpenFeignSpring Cloud提供的一个声明式的伪Http客户端, 它使得调用远程服务就像调用本地服务一样简单, 只需要创建一个接口并添加一个注解即可。

    Nacos很好的兼容了Feign Feign负载均衡默认集成了 Ribbon, 所以在Nacos下使用Fegin默认就实现了负载均衡的效果。

    2、OpenFeign的使用

    2.1 在order微服务中加入Feign的依赖

    1. org.springframework.cloud
    2. spring-cloud-starter-openfeign

    2.2 在主启动类上加开启注解

    1. @SpringBootApplication
    2. @EnableFeignClients //开启OpenFeign注解
    3. public class OrderApp {
    4. public static void main(String[] args) {
    5. SpringApplication.run(OrderApp.class,args);
    6. }
    7. @Bean
    8. @LoadBalanced //负载均衡
    9. public RestTemplate restTemplate(){
    10. return new RestTemplate();
    11. }
    12. }

    2.3 创建Feign的接口

    @FeignClient用于创建声明是API接口,该接口是RESTful风格的。Feign被设计成插拔式的,可注入其他组件和Feign一起使用。最典型的是如果Ribbon可用,Feign会和Ribbon相结合进行负载均衡。value()和name()一样,是被调用的服务的ServiceId

    这里接口的方法参数要和product的controller接口的方法参数一致

    1. @FeignClient(value = "springcloud-product")
    2. public interface ProductFeign {
    3. @GetMapping("product/getOne/{id}")
    4. CommonResult getOne(@PathVariable Integer id);
    5. }

    2.4 修改controller层

    1. @RestController
    2. @RequestMapping("order")
    3. public class OrderController {
    4. @Autowired
    5. private OrderService orderService;
    6. @Autowired
    7. private ProductFeign productFeign;
    8. @GetMapping("buy/{pid}/{num}")
    9. public CommonResult buy(@PathVariable Integer pid,@PathVariable Integer num){
    10. CommonResult result = productFeign.getOne(pid);
    11. Product product = JSON.parseObject(JSON.toJSONString(result.getData()), Product.class);
    12. Order order = new Order(2, "饺子皮", product.getPid(), product.getPname(), product.getPprice(), num);
    13. Integer addOrder = orderService.addOrder(order);
    14. if (addOrder>0){
    15. return new CommonResult(2000,"购买成功",addOrder);
    16. }
    17. return new CommonResult(5000,"购买失败",null);
    18. }
    19. }

    重启order微服务,查看效果,可以成功购买就说明配置成功

  • 相关阅读:
    【docker】查看容器日志
    gin 模版
    怎样将PPT转成文本格式?PPT文本一键生成文本格式 工作经验分享
    JAVA计算机毕业设计体育城场地预定系统后台源码+系统+mysql数据库+lw文档
    K8S常用kubectl命令汇总(持续更新中)
    开箱即⽤!HashData 云数仓上线华为蓝鲸应⽤商城
    【Unity UI ToolKit】01 - 新手教程 从控件创建到C#代码控制
    力扣每日一题 6/10
    期望和方差
    无线渗透-WPA攻击
  • 原文地址:https://blog.csdn.net/Dumpling_skin/article/details/126431013