欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

4-CloudAlibaba-Sentinel(整合OpenFeign)学习笔记2020.10.24

程序员文章站 2022-10-03 14:06:09
4-CloudAlibaba-Sentinel(整合OpenFeign)学习笔记2020.10.24前言: (Cloud官网 、GitHub官网)Sentinel与OpenFeign组件兼容。要使用它,除了引入sentinel-starter依赖关系之外,还需要完成以下两个步骤:在属性文件中启用伪装的Sentinel支持。 feign.sentinel.enabled=true添加openfeign starter依赖项以触发并启用sentinel starter:1.0 引入spring...

4-CloudAlibaba-Sentinel(整合OpenFeign)学习笔记2020.10.24

前言: (Cloud官网GitHub官网)

Sentinel与OpenFeign组件兼容。要使用它,除了引入sentinel-starter依赖关系之外,还需要完成以下两个步骤:

  • 在属性文件中启用伪装的Sentinel支持。 feign.sentinel.enabled=true
  • 添加openfeign starter依赖项以触发并启用sentinel starter

1.0 引入spring-cloud-starter-openfeign依赖

在原有学习Sentinel工程模块下增加openfeign依赖

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

1.1.1 配置文件application.yml 添加, 打开 Sentinel 对 Feign 的支持

server:
  port: 8080

spring:
  application:
    name: cloudalibaba-sentinel-service
  cloud:
    nacos:
      discovery:
        server-addr: 119.xx.xxx.xxx:8848 # Nacos服务注册中心地址
    sentinel:
      transport:
      	port: 8719
        dashboard:  119.xx.xxx.xxx:8090 # 配置Sentinel dashboard地址
   
# 暴露监控
management:
  endpoints:
    web:
      exposure:
        include: '*'
        
# 打开Sentinel对Feign的支持
feign:
  sentinel:
    enabled: true 

1.1.2 在启动类加上@EnableFeignClients注解,开启Feign的功能

@EnableDiscoveryClient
@SpringBootApplication
@EnableFeignClients
public class SentinelService
{
    public static void main(String[] args) {
        SpringApplication.run(SentinelService.class, args);
    }
}

1.1.3 简单的用法FeignClient

//注解要指定服务名 _不能有下划线
@FeignClient(value = "nacos-provider",fallback = FeginClientImpl.class) 
public interface FeginClient {

    //nacos-provider服务中名字为"/getPort/nacos/{id}"的接口
    @GetMapping(value = "/getPort/nacos/{id}")
    String getPort(@PathVariable("id") Integer id);
}

//-------------------------------分割线---------------------------------------------
/**
 * @Author: ZhiHao
 * @Date: 2020/10/23 17:50
 * @Description: 降级方法实现
 * @Versions 1.0
 **/
@Component //别忘记注册入框架管理
public class FeginClientImpl implements FeginClient {
    @Override
    public String getPort(Integer id) {
        return "调用失败了!!!!!!!!!"+id;
    }
}

调用之前学习nacos的提供者接口。

1.1.4 增加api接口进行启动测试

	@Autowired
    private FeginClient feginClient;

    @GetMapping("/testFeginClient")
    public CommonResult testFeginClient() {
        String feginClientPort = feginClient.getPort(666);
        return new CommonResult(HttpStatus.HTTP_OK, "正常响应", feginClientPort);
    }

PS: 如果启动遇到了 如下异常Caused by: java.lang.AbstractMethodError: com.alibaba.cloud.sentinel.feign.SentinelContractHolder.parseAndValidatateMetadata(Ljava/lang/Class;)Ljava/util/List;

那是因为fegin.context接口的定义为parseAndValidateMetadata。就是之前版本中定义的方法名拼写错误。

解决方法: 看这里

1.1.5 测试结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6wRjoTLI-1603506775253)(https://s1.ax1x.com/2020/10/23/BESNZT.jpg)]

1

本文地址:https://blog.csdn.net/weixin_44600430/article/details/109255523