注:通配服务降级通常在消费者端进行,在远程服务调用接口(service层)上进行,构建该接口的实现类来实现服务异常的兜底(服务降级fallback)。
1、服务接口
package com.springcloud.service;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
/**
* @author dc
* @date 2020/7/29 - 15:30
*/
@Component
@FeignClient(value = "payment-provider-Hystrix",fallback = PaymentServiceImpl.class)
public interface PaymentHystrixService {
@GetMapping("/payment/hystrix/ok")
public String paymentInfo_OK(@RequestParam("id") Integer id);
@GetMapping("/payment/hystrix/timeout")
public String paymentInfo_TimeOut(@RequestParam("id") Integer id);
}
2、服务实现类
package com.springcloud.service;
import org.springframework.stereotype.Component;
/**
* @author dc
* @date 2020/7/31 - 14:47
*/
@Component //指定为spring容器组件
public class PaymentServiceImpl implements PaymentHystrixService {
@Override
public String paymentInfo_OK(Integer id) {
return "paymentInfo_OK方法已经出错!!!";
}
@Override
public String paymentInfo_TimeOut(Integer id) {
return "paymentInfo_TimeOut方法已经出错!!!";
}
}
3、配置文件
server.port=81
spring.application.name=payment-consumer
eureka.client.fetch-registry=true
eureka.client.register-with-eureka=true
eureka.client.service-url.defaultZone=http://eureka7001.com:7001/eureka/
#开启feign对hystrix的支持
feign.hystrix.enabled=true