首页 > 其他分享 >5.feign整合sentinel

5.feign整合sentinel

时间:2022-11-14 11:37:16浏览次数:35  
标签:feign itcast cn UserClient 整合 sentinel import

feign整合sentinel

SpringCloud中,微服务调用都是通过Feign来实现的,因此做客户端保护必须整合Feign和Sentinel。

一、修改配置,开启sentinel功能

修改OrderService的application.yml文件,开启Feign的Sentinel功能:

# 配置连接池:
feign:
  httpclient:
    enabled: true
    max-connections: 200
    max-connections-per-route: 50
  sentinel:
    enabled: true # 开启feign对sentinel的支持

二、编写失败降级逻辑

业务失败后,不能直接报错,而应该返回用户一个友好提示或者默认结果,这个就是失败降级逻辑。

给FeignClient编写失败后的降级逻辑

①方式一:FallbackClass,无法对远程调用的异常做处理

②方式二:FallbackFactory,可以对远程调用的异常做处理,我们选择这种

步骤一:在feing-api项目中定义类,实现FallbackFactory:

package cn.itcast.feign.clients.fallback;

import cn.itcast.feign.clients.UserClient;
import cn.itcast.feign.pojo.User;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class UserClientFallBackFactory  implements FallbackFactory<UserClient> {

    //feign调用失败,给出友好提示
    @Override
    public UserClient create(Throwable throwable) {
        return new UserClient() {
            @Override
            public User selectById(Long id) {
                log.error("调用userservice服务失败",throwable);
                return new User();
            }
        };
    }
}

步骤二:在feing-api项目中的FeignClientConf类中将UserClientFallbackFactory注册为一个Bean:

 @Bean
    public UserClientFallBackFactory userClientFallBackFactory(){
        return new UserClientFallBackFactory();
    }

步骤三:在feing-api项目中的UserClient接口中使用UserClientFallbackFactory:

package cn.itcast.feign.clients;

import cn.itcast.feign.clients.fallback.UserClientFallBackFactory;
import cn.itcast.feign.pojo.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

@FeignClient(value = "userservice",fallbackFactory = UserClientFallBackFactory.class)//引号里面的是要调用的服务名称
public interface UserClient {
    @GetMapping("user/{id}")//Controller,请求路径
    User selectById(@PathVariable("id") Long id);
}

重启后,访问一次订单查询业务,然后查看sentinel控制台,可以看到新的簇点链路:

标签:feign,itcast,cn,UserClient,整合,sentinel,import
From: https://www.cnblogs.com/zhangdashuaige/p/16888454.html

相关文章

  • feig整合sentinel出现循环依赖问题
    feig整合sentinel出现循环依赖问题1.场景重现,回顾feign整合sentinel步骤1.1修改配置,开启sentinel功能修改OrderService的application.yml文件,开启Feign的Sentinel功能:f......
  • Spring Boot 整合 HBase
    HBase介绍HBase是一个分布式的、面向列的开源数据库,Hadoop数据库。搭建基于Hadoop和ZK。历史是基于Google的Bigtable、Google文件系统等论文。HBase在Hadoop......
  • OpenFeign
    OpenFeign—服务间的调用一.什么是Feign和OpenFeign?在使用Feign或者OpenFeign前,服务之间的调用路径在函数内部设置:能不能像controller调用service一样,通过注入的方式设置呢......
  • OpenFeign
    OpenFeign—服务间的调用一.什么是Feign和OpenFeign?在使用Feign或者OpenFeign前,服务之间的调用路径在函数内部设置:能不能像controller调用service一样,通过注......
  • flink开发中整合flinksql、kafka、mysql、hbase等问题与结果记录
    在flink开发中,通常会配合flinksql、kafka、mysql、hbase等一块使用,为避免jar包缺失、冲突,现整理一下。一、版本说明flink:1.13.0kafka:2.11mysql:8.0hbase:2.2.3二、fl......
  • 单细胞基础教程:跨条件整合分析
    导读撰写本文的主要目的是:整合处理与对照后的PBMC(Humanperipheralbloodmononuclearcell,人外周血单个核细胞)数据集以了解细胞类型特异性反应和整合的作用。本教程......
  • feign之一 ---
    1:Feign是什么Feign是一个声明式的Web服务客户端,使得编写Web服务客户端变得非常容易,只需要创建一个接口,然后在上面添加注解即可。官网:https://github.com/OpenFeign/feign......
  • 2.Sentinel介绍和安装以及与微服务整合
    Sentinel介绍和安装Sentinel是阿里巴巴开源的一款微服务流量控制组件。官网地址:https://sentinelguard.io/zh-cn/index.html1.安装Sentinel1.1下载sentinel官方提供了U......
  • 1.初识Sentinel
    1.雪崩问题及解决方案1.1微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务如图,如果服务提供者D发生了故障,当前的应用的部分业务因为依赖于服务D,因此......
  • # SpringBoot 整合 Swagger
    SpringBoot整合Swagger是什么不介绍,这个东西很简单,主要看点底层源码即可,注意:这个东西很容易造成版本错乱的部分引入狂神说的代码段,因为我有些东西懒得写引入<sp......