美文网首页
(九十八)java版spring cloud 多租户社交电子商务

(九十八)java版spring cloud 多租户社交电子商务

作者: IT小跑兵 | 来源:发表于2019-06-21 09:29 被阅读0次

    电子商务平台源码请加企鹅求求:三伍三六二四柒二五玖。继之前项目继续整合hystrix框架,hystrix框架为Netflix的模块,是一个容错框架。当用户访问服务调用者的时候,如果服务提供者出现异常导致无法正常返回出现请求超时的情况,而服务调用者并不知情,还在继续请求,这样会导致服务的崩溃。

    传统的解决办法:添加超时机制、人肉运维,而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版spring cloud 多租户社交电子商务

          本文链接:https://www.haomeiwen.com/subject/ekpeqctx.html