提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
feign-hystrix
使用步骤
1.引入依赖
代码如下(示例):
<!-- feign -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
2.编写service
代码如下(示例):
package com.service;
import com.entity.Dept;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import java.util.List;
@Component
@FeignClient(value = "SPRING-CLOUD-PROVIDER-DEPT",fallbackFactory = DeptClientFallBackFactory.class)
public interface DeptClientService {
@GetMapping("/dept/get/{id}")
Dept queryById(@PathVariable("id") Integer id);
@GetMapping("/dept/list")
List<Dept> queryAll();
@PostMapping("/dept/add")
int addDept(Dept dept);
}
3.编写fallbackFactory
代码如下(示例):
package com.service;
import com.entity.Dept;
import feign.hystrix.FallbackFactory;
import org.springframework.stereotype.Component;
import java.util.List;
//服务降级
@Component
public class DeptClientFallBackFactory implements FallbackFactory {
public Object create(Throwable throwable) {
return new DeptClientService() {
public Dept queryById(Integer id) {
return new Dept()
.setDeptno(Long.valueOf(id))
.setDname("id=>"+id+"没有对应的信息,客户端提供了降级的信息,这个服务现在已经被关闭")
.setDb_source("no database selected");
}
public List<Dept> queryAll() {
return null;
}
public int addDept(Dept dept) {
return 0;
}
};
}
}
总结
服务降级发生客户端
针对的是控制器类
服务降级是和feign一起使用的,打开feign的依赖就会发现