Sentinel 整合OpenFeign降级


package com.wsm.stock.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/stock")
public class StockController {

    @Value("${server.port}")
    String port;

    @RequestMapping("/reduct")
    public String reduct(){
        System.out.println("扣减库存");
        return "扣减库存:"+port;
    }

    @RequestMapping("/reduct2")
    public String reduct2(){
        int a=1/0;
        System.out.println("扣减库存2");
        return "扣减库存2:"+port;
    }
}

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springcloudalibabaartifactId>
        <groupId>com.wsm.springcloudgroupId>
        <version>0.0.1-SNAPSHOTversion>
    parent>
    <modelVersion>4.0.0modelVersion>

    <artifactId>order-openfeign-sentinelartifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>

        dependency>

        
        <dependency>
            <groupId>com.alibaba.cloudgroupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
        dependency>

        
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-openfeignartifactId>
        dependency>

        
        <dependency>
            <groupId>com.alibaba.cloudgroupId>
            <artifactId>spring-cloud-starter-alibaba-sentinelartifactId>
        dependency>
    dependencies>

project>

application.yml

feign:
  sentinel:
    #OpenFeign 整合 Sentinel
    enabled: true
server:
  port: 8041
  #应用名称  (nacos 会将该名称当作服务名称)
spring:
  application:
    name: order-openfeign-sentinel
  cloud:
    nacos:
#      server-addr: 127.0.0.1:8848
      server-addr: 192.168.133.128:8847  #集群 nginx 负载均衡访问 nacos
      discovery:
        username: nacos
        password: nacos
        namespace: public
feign:
  sentinel:
    #OpenFeign 整合 Sentinel
    enabled: true
package com.wsm.order.feign;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;

@FeignClient(value="stock-nacos",path="/stock",fallback = StockFeignServiceFallBack.class)
public interface StockFeignService {

    @RequestMapping("/reduct2")
    public String reduct2();
}
package com.wsm.order.feign;

import org.springframework.stereotype.Component;

@Component
public class StockFeignServiceFallBack implements StockFeignService {
    @Override
    public String reduct2() {
        return "降级了!!";
    }
}
package com.wsm.order.controller;

import com.wsm.order.feign.StockFeignService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/order")
public class OrderController {

    @Autowired
    StockFeignService stockFeignService;

    @RequestMapping("/add")
    public String add(){
        System.out.println("下单成功!");
        String stock_msg = stockFeignService.reduct2();
        return "hello feign "+ stock_msg ;
    }
}