@EnableDiscoveryClient、@EnableEurekaClient
异同
共同点:都是能够让注册中心能够发现,扫描到该服务;
不同点:@EnableEurekaClient
只适用于Eureka作为注册中心,@EnableDiscoveryClient
可以是其他注册中心。
@FeignClient
@FeignClient(name = "CLOUD-PROVIDER-HYSTRIX-PAYMENT", configuration = xxxx.class, fallback = PaymentHystrixService.class)
*客户端直接调用目标服务方法(非通过ribbon+restTemplate),自定义配置类xxxx.class(负载均衡策略、日志等配置)不能被
@ComponentScan
扫描到;
*该注解配合@EnableFeignClients
激活使用;
*注解内属性fallback指定服务降级fallback的承载类,该类实现了@FeignClient
所标注的接口,其中fallback方法根据方法名一一对应。
@HystrixCommand
@HystrixCommand(fallbackMethod = "paymentInfo_TimeoutHandler", commandProperties = {
//设置自身调用的超时时间峰值,峰值内可以正常运行,超过了需要由兜底的方法处理,作服务降级fallback
@HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "3000")
})
*
@HystrixCommand
需要配合@EnableCircuitBreaker
或者@EnableHystrix
激活使用;
*尽管配置了热部署,在对@HystrixCommand
内属性的修改建议重启微服务;
*既作用在服务端 也可以作用在客户端。
@EnableHystrix、@EnableCircuitBreaker
@EnableHystrix、@EnableCircuitBreaker
启用熔断降级服务。
@DefaultProperties
@DefaultProperties(defaultFallback = "paymentGlobalFallbackMethod")
*此注解用于指定通用的FallBack方法,属于统一错误处理方法,应当适用所有服务调用发放的错误调用,因此此种方式默认调用空参FallBack方法,所以改FallBack方法的参数列表为空参即可;
*此注解的【作用范围】仅为注解本身所标注的类中。
@SpringCloudApplication
由于一个标准的springcloud项目必然有
@EnableCircuitBreaker、@EnableDiscoveryClient、@SpringBootApplication
因此可以使用
@SpringCloudApplication
替代上述3条注解。