Spring Cloud Feign 实现服务降级

本文介绍如何在Feign中集成Hystrix实现服务降级,通过具体示例展示了配置步骤和服务降级的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当后端一个接口响应非常慢的时候,那么请求该接口的时候会被强制等待,直到返回或者超时结束.若在高负载的情况下,如果不做处理的话,这些问题会导致系统崩溃.

Feign已经为我们集成了Hystrix,默认就会使用断路器包裹所有方法

下面来看下简单的服务降级使用过程:

继续使用前面搭建的Eureka,Feign,Service服务

一 : 新建一个UserServiceFallBack类,实现UserService接口

package cn.sh.daniel.fallback;

import org.springframework.stereotype.Component;
import cn.sh.daniel.entity.User;
import cn.sh.daniel.service.UserService;
/**
 * UserService接口的降级服务
 * 
 * @author Daniel
 * @time 2018年1月18日 下午2:35:09
 *
 */
@Component
public class UserServiceFallBack implements UserService{

	@Override
	public User findUserById(Long id) {
		return new User();
	}

	@Override
	public String aveUser(User user) {
		return "Error";
	}

	@Override
	public User findUserByNameAndPassword(String name, String password) {
		return new User();
	}
}
这边只是简单的实现了这几个方法

二 : 在UserService接口中添加fallback去指定降级的方法

package cn.sh.daniel.service;

import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import cn.sh.daniel.config.FeignLoggerConfiguration;
import cn.sh.daniel.entity.User;
import cn.sh.daniel.fallback.UserServiceFallBack;

@FeignClient(value = "cloud-shop-userservice",fallback = UserServiceFallBack.class,configuration = FeignLoggerConfiguration.class)
public interface UserService {
	
	@GetMapping("/user/{id}")
	public User findUserById(@PathVariable("id")Long id);
	
	@PostMapping("/user/user")
	public String aveUser(@RequestBody User user) ;
	
	@GetMapping("/user/findUser")
	public User findUserByNameAndPassword(@RequestParam("name")String name ,@RequestParam("password")String password);
}
三 : 重启Feign服务,调用服务


可以正常调用, 那此处将userservice服务shut down掉,再执行此方法看效果


直接报错了?

经过查证,原来feign集成hystrix需要配置开启

feign:
  hystrix:
    enabled: true

重新启动继续上面的操作:


发现终于走进了降级方法啦!!


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值