springCloud 服务间相互调用
1、必须注册到eureka并被发现
2、pom引入 包
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
3、Application启动类中使用@EnableFeignClients注解 用来开启feign注解
4、新建接口(interface) 上使用@FeignClient注解(name=eureka中注册的名称,不区分大小写)
5、@FeignClient注解的容错方法,异常时调用方法回滚@FeignClient(name="**", fallback=****.class)
6、容错方法的注解调用还有 FallbackFactory 不能和 fallback同时使用
7、容错类中需添加@Component注解,用以被spring扫描
8、容错类需实现(implements)FeignClient类,针对不同方法返回不同提示内容
9、方法在controller调用时,直接用Autowired 或者 Resource注解 注入使用(和调用service相同)
10、FeignClient类上不能使用 @RequestMapping http请求且使用accpet时会报404 (未经测试)
Content-Type:application/json
Accept:application/json
11、Hystrix默认的超时时间是1秒,如果超过这个时间尚未响应,将会进入fallback代码 (未经测试)
解决方案有三种,以feign为例。
方法一
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 5000
该配置是让Hystrix的超时时间改为5秒
方法二
hystrix.command.default.execution.timeout.enabled: false
该配置,用于禁用Hystrix的超时时间
方法三feign.hystrix.enabled: false
该配置,用于索性禁用feign的hystrix
@EnableEurekaClient