(四十五)java版spring cloud+spring boot+redis多租戶社交電子商務平臺-SpringCloud整合Hystrix

電子商務平臺源碼請加企鵝求求:三五三六二四七二五九。SpringCloud整合Hystrixweb

因爲服務調用者有可能調用服務掛掉的提供者,服務調用方整合Hystrixspring

引入依賴bash

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-hystrix</artifactId>
        </dependency>   
複製代碼

主啓動開啓斷路器框架

@SpringBootApplication
@EnableEurekaClient
//開啓斷路器
@EnableCircuitBreaker
public class SaleApp {

    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }

    public static void main(String[] args) {
        new SpringApplicationBuilder(SaleApp.class).web(true).run(args);
    }
}
複製代碼

服務調用service修改ui

@Service
//對這個類採用全局默認的回退機制,回退方法不能帶參數,例如:「getMemberFallback」沒有參數
//@DefaultProperties(defaultFallback = "getMemberFallback")
public class MemberService {

    @Autowired
    private RestTemplate restTpl;

    //一、@HystrixCommand、@HystrixProperty這些註解不是SpringCloud註解,而是Hystrix框架提供的
    //二、fallbackMethod當修飾具體方法時,fallbackMethod方法的參數和修飾方法保持一致
    @HystrixCommand(fallbackMethod = "getMemberFallback", groupKey = "MemberGroup", commandKey = "MemberCommandKey", 
            commandProperties = {
            //超時熔斷
            @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "1000")
    }, threadPoolProperties = {
            @HystrixProperty(name = "coreSize", value = "2")
    })
    public Member getMember(Integer id) {
        try {
            Thread.sleep(500);
        } catch (Exception e) {

        }

        Member member = restTpl.getForObject(
                "http://spring-hy-member/member/{id}", Member.class, id);
        return member;
    }

    public Member getMemberFallback(Integer id) {
        Member m = new Member();
        m.setId(1);
        m.setName("error member");
        return m;
    }
}
複製代碼

注意: @DefaultProperties:能夠配置全局回退機制,回退方法不能帶參數,例如:「getMemberFallback」沒有參數 @HystrixCommand、@HystrixProperty這些註解不是SpringCloud註解,而是Hystrix框架提供的 fallbackMethod當修飾具體方法時,fallbackMethod方法的參數和修飾方法保持一致spa

相關文章
相關標籤/搜索