springcloud中sentient整合openfeign组件

openfeign作为微服务各个模块之间调用的组件,如果服务提供方出现异常,会将错误返回给服务消费方,消费方可以通过sentinel的服务降级方法,对如果调用异常的情况进行处理

以下介绍下具体做法:

一、服务消费方必须整合openfeign,方法可以参考:https://www.cnblogs.com/qwg-/p/18007449

pom.xml中必须添加以下依赖:

复制代码
   <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
复制代码

二、在application.yml文件中添加

复制代码

server:
port: 8090
spring:
  application:
    name: order-sentinel-openfeign

  cloud:
    sentinel:
      transport:
        dashboard: 127.0.0.1:8080
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        username: nacos
        password: nacos
        namespace: public
feign:
  sentinel:
    enabled: true  #尤其是这个
复制代码

三、代码

StockFeignService为feign接口

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
@FeignClient(name = "stock-service",path = "/stock",fallback = StockFeignFabackImpl.class)  //name为服务名称,path为接口路径
public interface StockFeignService {

    @GetMapping("/reduce2")
    String reduce2();
}

StockFeignFabackImpl为feign接口的实现类,该方法就是降级后执行的方法

@Component   // 注意需要添加到spring容器中
public class StockFeignFabackImpl implements StockFeignService {
    @Override
    public String reduce2() {
        return "被降级";
    }
}

被调用方(服务提供者)

复制代码
@RestController
@RequestMapping("/stock")
public class StockController {

    @GetMapping("/reduce2")
    public String reduce2(){
        int a = 1/0;   //故意造异常
        System.out.println("扣减库存");
        return "扣减库存 " + port;
    }
复制代码

controller测试demo

复制代码
@RestController
@RequestMapping("/order")
public class OrderController {

    @Resource
    StockFeignService stockFeignService;


    @GetMapping("/openfeign")
    public String openfeign(){
        String msg = stockFeignService.reduce2();
        return "hello " + msg;
    }
复制代码

测试请求

 以上内容纯学习使用!

 

posted @   多多指教~  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示