56浏览

继之前项目继续整合hystrix框架,hystrix框架为Netflix的模块,是一个容错框架。当用户访问服务调用者的时候,如果服务提供者出现异常导致无法正常返回出现请求超时的情况,而服务调用者并不知情,还在继续请求,这样会导致服务的崩溃。

需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码请加企鹅求求 :二一四七七七五六三三

传统的解决办法:添加超时机制、人肉运维,而hystrix正是为解决这一问题,它在服务调用者与服务提供者之间增加了容错机制,当服务提供者无法提供服务的时候,服务调用者会根据设置的超时时间来阻断请求,并调用回退逻辑。

1、添加hystrix依赖

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>


2、在application.java类中加入@EnableCircuitBreaker断路器注解。
3、在controller中加入类设置@DefaultProperties超时时间和最大线程值,我们为/hello接口增加一个3秒的线程阻塞,把hystrix的超时时间设置为2秒,让该方法走回退逻辑。接口方法上的@HystrixCommand中的fallbackMethod参数就是回退逻辑的方法名。helloFallback()方法为回退方法。

@RestController
@DefaultProperties(groupKey = "hello-groupKey",
        commandProperties = {
            // 超时时间(毫秒)
            @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "2000")
        },
        threadPoolProperties = {
            // 最大线程数
            @HystrixProperty(name = "coreSize", value = "2")
        })
public class MyRestController {

    @Autowired
    private IService iService;

    @GetMapping(value = "/hello", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @HystrixCommand(fallbackMethod = "helloFallback", commandKey = "hello-commandKey")
    public String hello() throws InterruptedException {
        Thread.sleep(3000);
        String hello = iService.hello();
        return "hello: " + hello;
    }

    public String helloFallback() {
        return "helloFallback";
    }

}


微服务java b2b商城系统_java商城源码100%开源适合2次开发
 

编辑器已禁用,请先登录后再评论

共 0 个回答

按投票排序 按时间排序
页数为0!!

我来回答

我在编程中遇到了一个问题?

我要提问

社区规则

1.不允许发布任何推广信息、非IT相关问题以及没有意义的灌水贴

2.提问标题清晰明了,内容尽可能详细,通过截图和代码将问题描述清楚

3.回答需经过自己仔细思考,不一定要正确,但一定要负责任

4.使用过程中遇到问题,或者有任何意见建议,可以通过新浪微博 @程序员俱乐部 私信反馈