前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenFeign使用

OpenFeign使用

作者头像
CBeann
发布2023-12-25 17:43:51
1180
发布2023-12-25 17:43:51
举报
文章被收录于专栏:CBeann的博客CBeann的博客

前提

服务注册中心Nacos+服务提供者

Sentinel

会搭建SpringBoot(2.x)+web

服务消费者:OpenFeign使用

代码下载:https://github.com/cbeann/share/tree/master/nacos-sentinel-openfeign

在SpringBoot(2.2.2)+web的基础之上

添加pom依赖

代码语言:javascript
复制
<!--  SpringCloud alibaba nacos    -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.1.0.RELEASE</version>
        </dependency>


        <!--   sentinel     -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
            <version>2.1.0.RELEASE</version>
        </dependency>
        <!--&lt;!&ndash;   openfeign     &ndash;&gt;-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>2.2.1.RELEASE</version>
        </dependency>

修改application.yml文件

代码语言:javascript
复制
server:
  port: 80
spring:
  application:
    name: sentinel-ribbon-openFeign
  cloud:
    nacos:
      discovery: #Nacos注册中心地址
        server-addr: 39.105.30.146:8848
    sentinel:
      transport: #dashboard地址
        dashboard: localhost:8080
        port: 8719  #默认端口,如果被占用则从8719依次+1扫描

###sentinel可以监控到此服务
management:
  endpoints:
    web:
      exposure:
        include: "*"


###激活Sentinel对openFeign的支持
feign:
  sentinel:
    enabled: true

修改主启动类

代码语言:javascript
复制
@EnableDiscoveryClient
@EnableFeignClients

编写service层(☆☆☆☆☆),虽然是一个接口,但是可以被注入到controller中

代码语言:javascript
复制
@FeignClient(value = "provider",//服务名称
        fallback = HelloFallbackService.class)//回调方法
public interface HelloService {
    @GetMapping(value = "/provider/get/{id}")
    String PaymentSQL(@PathVariable("id") Long id);
}
代码语言:javascript
复制
@Component
public class HelloFallbackService implements HelloService {
    @Override
    public String PaymentSQL(Long id) {
        return "------fallback";
    }
}

编写控制层

代码语言:javascript
复制
@RestController
public class HelloController {

    @Autowired
    private HelloService helloService;


    @GetMapping(value = "/consumer/get/{id}")
    public String paymentSQL(@PathVariable("id") Long id) {
        return helloService.PaymentSQL(id);
    }
}

OpenFeign的超时控制

如下面代码所示,当请求/consumer/payment/feign/timeout 时,调用的微服务是sleep三秒后在返回结果,但是Feign规定一秒请求不到结果就报错,因为我们需要修改配置让其支持更久的响应时间。

代码语言:javascript
复制
@RestController
public class OrderFeignController {

    @Autowired
    private PaymentFeignService paymentFeignService;


    @GetMapping(value = "/consumer/payment/feign/timeout")
    public String paymentFeignTimeout(){
        String s = paymentFeignService.paymentFeignTimeout();
        return s;
    }
}

修改办法

修改application.yml配置文件

代码语言:javascript
复制
#设置feign 客户端超时时间(openFeign默认支持ribbon)
ribbon:
  #指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间
  ReadTimeout: 5000
  #指的是建立连接后从服务器读取到可用资源所用的时间
  ConnectTimeout: 5000

OpenFeign的日志增强

添加OpenFeign的日志类

代码语言:javascript
复制
import feign.Logger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author CBeann
 * @create 2020-04-08 23:25
 */
@Configuration
public class FeignConfig {
    @Bean
    Logger.Level feignLoggerLevel(){
        return Logger.Level.FULL;
    }
}

修改yml文件

代码语言:javascript
复制
logging:
  level:
    #feign日志以什么级别监控哪个接口
    #feign日志以debug级别监控com.imooc.springcloud.service.PaymentFeignService
    com.imooc.springcloud.service.PaymentFeignService: debug

总结

OpenFeign和原来的Feign用法差不多,就是添加的依赖不一样

原来是

代码语言:javascript
复制
 <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-feign</artifactId>
    </dependency>

现在是

代码语言:javascript
复制
 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前提
  • 服务消费者:OpenFeign使用
  • OpenFeign的超时控制
  • OpenFeign的日志增强
  • 总结
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档