1.先复习一下openfeign的远程调用
首先分为:被调用服务和调用服务
被调用服务相关:被调用服务什么都不用做,就按照正常的来就行
调用服务相关:
1.导入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2.创建调用客户端,也就是一个接口,此处以调用user-service为例
@FeignClient(value = "user-service")//value的值是被调用服务在注册中心的服务名称
public interface UserClient { //接口名称随意
@GetMapping("/user/{id}") //请求方式和请求路径应与被调用服务中的一致
User findById(@PathVariable("id") Long id); //返回结果与方法名以及参数与被调用服务中一致
}
3.在启动类上添加启动远程调用注释
@SpringBootApplication
@EnableFeignClients
public class BasicApplication {
public static void main(String[] args) {
SpringApplication.run(BasicApplication .class,args);
}
}
上面就已经完成了远程调用的入门案例
下面写降级方法,此处采用的是Hystrix(当远程调用失灵时,就会执行该方法)
4.先在application.yml文件中开Hytrix的熔断功能
feign:
hystrix:
enabled: true # 开启Feign的熔断功能
5.新建一个类实现上面的接口:
@Component
public class UserClientFallback implements UserClient {
@Override
public User findById(Long id) { //方法体中就是远程调用出错时执行的内容
User user = new User();
user.setId(0L);
user.setUsername("用户查询出现异常!");
return user;
}
}
6.在调用客户端中添加降级方法
@FeignClient(value = "userservice", fallback = UserClientFallback.class)//此处就指定降级类
public interface UserClient {
@GetMapping("/user/{id}")
User findById(@PathVariable("id") Long id);
}
至此,Openfeign的远程调用相关内容就完成
哦,对了还有具体的使用方式,其实与包内单纯的调用一致,就是单纯的调用接口而已
@Autowired
private UserClient userClient;
public user demo(){
User user = userClient.findById(163543);
return user;
}
至此,远程调用的内容完成