zoukankan      html  css  js  c++  java
  • springcloud(5)openfeign服务调用

    之前的学习中我们采用的ribbon负载均衡模式是搭配着restTemplate来使用,而使用openfeign来管理服务的调用的话,则变成了面向接口的方式,比较符合我们面向服务的思想。

    (1)消费者接口。

    首先openfeign是面向消费者的接口,消费者通过独立的接口写入服务提供者的接口,然后进行调用即和我们熟悉的调用对象一样了。

    新建消费者接口,value的值是服务提供者在eureka注册的名字。

    @Component
    @FeignClient(value = "CLOUD-PAYMENT-SERVICE")
    public interface PaymentFeignService {
        @GetMapping("/payment/get/{id}")
        public CommonResult<PayMent> getPaymentById(@PathVariable("id") Long id);
       
    }

    (2)controller调用

    @RestController
    @Slf4j
    public class OrderFeignController {
        @Resource
        private PaymentFeignService paymentFeignService;
    
        @GetMapping(value = "/consumer/payment/get/{id}")
        public CommonResult<PayMent> getPaymentId(@PathVariable("id") long id){
             return paymentFeignService.getPaymentById(id);
        }
    }

    可以发现以前是采用restTemplate调用方法来返回参数。现在改成了接口自然的调用方法来实现。

    (3)启动类注解和pom文件

    @EnableFeignClients

    启动类需要加上这个注解。

     <!-- openfeign -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-openfeign</artifactId>
            </dependency>

    (4)超时管理

    一般消费者在调用服务提供者的服务时候只会等待短暂的几秒,如果一定时间内得不到响应就会直接返回报错,所以可以适当的进行超时控制,延迟一定响应时间。

    只需要在yml文件中配置一下

    ribbon:
      #指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的实际
      ReadTimeout: 5000
      #指的是建立连接后从服务器读取到可用资源所用的时间
      ConnectTimeout: 5000

    (5)日志增强

    为了得到更加详细的日志情况,可以配置上日志增强

    yml文件配置

    logging:
      level:
        #feign日志以什么级别监控那个接口
        com.bai.service.PaymentFeignService: debug

    创建一个配置类

    @Configuration
    public class FeignConfig {
        @Bean
        Logger.Level feignloggerlevel(){
            return Logger.Level.FULL;
        }
    }

     本篇所有代码均在GitHub:

  • 相关阅读:
    java如何将char类型的数字转换成int型的数字,而不是Ascii
    java 二分查找的注意事项
    IntelliJ IDEA 下的svn配置及使用的非常详细的图文总结
    java中Math的常用方法整理
    判断字符串是否可由重复子字符串组成
    P3558 [POI2013]BAJ-Bytecomputer
    BZOJ 3329. Xorequ
    Codeforces 1221F. Choose a Square
    Codeforces 1221E. Game With String
    Codeforces 1221D. Make The Fence Great Again
  • 原文地址:https://www.cnblogs.com/lin530/p/13913056.html
Copyright © 2011-2022 走看看