springcloud使用feignClient调用微服务的接口(Dalston.SR1版本)
1、使用feign
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
- 在启动类添加@EnableFeignClients注解,若feignClient写在公共模块,则需要注意feignClient的路径是否在启动类的包路径或子包路径之内,若不在,直接启动会报不能注入feignClient的错误,需要添加属性basePackages=“com.xxx.xxx”
@EnableFeignClients(basePackages = "com.nari.feignclients")
public interface WebSocketClient {
...
}
- 在feignClient类上面在添加@FeignClient注解,name属性为需要调用的微服务名
@FeignClient(name = "PD-ALARM")
- 编写需要调用的接口(注意:此处的映射url不能和此微服务已有的url相同,否则服务不能启动,报映射地址混淆的错误)
@PostMapping("/webSocket/broadCastInfo")
boolean broadCastInfo(TransBean transBean);
webSocketClient.broadCastInfo(transBean);
2、添加fallback,确保在被调用的服务出现问题时能及时返回特定的数据,防止调用服务堵塞
feign:
hystrix:
enabled: true
- 添加fallback类,并在feignClient类添加引用(注:不要忘记添加@Component注解)
@Component
public class WebSocketClientFallback implements WebSocketClient{
@Override
public boolean broadCastInfo(TransBean transBean) {
return false;
}
...
}
@FeignClient(name = "PD-ALARM", fallback = WebSocketClientFallback.class)
public interface WebSocketClient {
...
}