我是靠谱客的博主 自由帽子,最近开发中收集的这篇文章主要介绍SpringCloud 微服务架构(15)- 基于 Feign的熔断配置1 基于 Feign的熔断配置,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
1 基于 Feign的熔断配置
SpringCloud Fegin默认已为Feign整合了hystrix,所以添加Feign依赖后就不用在添加hystri
1.1 案例
- IProductFeignClient
package com.tzb.order.feign;
import com.tzb.order.entity.Product;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
/**
* 声明需要调用的微服务的名称
*/
@FeignClient(name="service-product")
public interface IProductFeignClient {
// 配置需要调用的微服务接口
@GetMapping("/product/{id}")
public Product findById(@PathVariable Long id);
}
1.1.1 开启 hystrix 支持
- application.yml
server:
port: 8082
spring:
application:
name: service-order #服务名称
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/springcloud_shop?useUnicode=true&characterEncoding=utf8
username: root
password: root
jpa:
database: MySQL
show-sql: true
open-in-view: true
eureka:
client:
service-url:
defaultZone: http://localhost:9000/eureka/
instance:
prefer-ip-address: true # 使用 ip 地址注册
# 配置 feign 日志输出
# NONE:不输出日志, BASIC:适用于生产环境追踪问题
# HEADERS: 在 BASIC 的基础上,记录请求和响应的头信息, FULL:记录所有
feign:
client:
config:
service-product: # 需要调用的服务名称
loggerLevel: FULL
#开启对 hystrix 的支持
hystrix:
enabled: true
logging:
level:
com.tzb.order.feign.IProductFeignClient: debug
1.1.2 自定义实现类(熔断触发的降级逻辑)
package com.tzb.order.feign;
import com.tzb.order.entity.Product;
import org.springframework.stereotype.Component;
@Component
public class ProductFeignClientCallback implements IProductFeignClient {
/**
* 熔断降级的方法
*
* @param id
* @return
*/
@Override
public Product findById(Long id) {
Product product = new Product();
product.setProductName("feign 调用触发了熔断降级的方法");
return product;
}
}
1.1.3 feignClient 接口添加降级方法的支持
package com.tzb.order.feign;
import com.tzb.order.entity.Product;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
/**
* 声明需要调用的微服务的名称
* name: 服务提供者的名称
* fallback : 配置熔断发生的降级方法实现类
*/
@FeignClient(name = "service-product", fallback = ProductFeignClientCallback.class)
public interface IProductFeignClient {
// 配置需要调用的微服务接口
@GetMapping("/product/{id}")
public Product findById(@PathVariable Long id);
}
最后
以上就是自由帽子为你收集整理的SpringCloud 微服务架构(15)- 基于 Feign的熔断配置1 基于 Feign的熔断配置的全部内容,希望文章能够帮你解决SpringCloud 微服务架构(15)- 基于 Feign的熔断配置1 基于 Feign的熔断配置所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复