老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)

SpringCloud中Feign與Hystrix整合的示例分析

這篇文章給大家分享的是有關(guān)Spring Cloud中Feign與Hystrix整合的示例分析的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供廣靈企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站制作、成都網(wǎng)站建設(shè)、HTML5、小程序制作等業(yè)務(wù)。10年已為廣靈眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。

Feign與Hystrix整合

        Feign對(duì)Hystrix提供了支持,為“服務(wù)調(diào)用者”加入以下Feign依賴:

        
            org.springframework.cloud
            spring-cloud-starter-feign
        

        在application.yml中打開(kāi)Feign的Hystrix開(kāi)關(guān),請(qǐng)見(jiàn)以下配置:

feign:
  hystrix:
    enabled: true

        在應(yīng)用啟動(dòng)類里面,加入開(kāi)Feign的開(kāi)關(guān),本小節(jié)的“服務(wù)調(diào)用者”應(yīng)用啟動(dòng)類,所使用的注解如下:

@SpringBootApplication
@EnableDiscoveryClient
@EnableCircuitBreaker
@ServletComponentScan
@EnableFeignClients

        新建Feign接口,調(diào)用“服務(wù)提供者(spring-hystrix-provider)”的“/hello”服務(wù),請(qǐng)見(jiàn)代碼清單6-24。

        代碼清單6-24:

        codes\06\6.4\spring-hystrix-invoker\src\main\java\org\crazyit\cloud\feign\HelloClient.java

@FeignClient(name = "spring-hystrix-provider", fallback = HelloClientFallback.class)
public interface HelloClient {

    @RequestMapping(method = RequestMethod.GET, value = "/hello")
    public String hello();

    @Component
    static class HelloClientFallback implements HelloClient {

        public String hello() {
            System.out.println("hello 方法的回退");
            return "error hello";
        }
    }
}

        與普通的Feign客戶端無(wú)異,僅僅設(shè)置了處理回退的類,回退類實(shí)現(xiàn)了客戶端接口。為了能測(cè)試效果,修改服務(wù)器端的“/hello”服務(wù),讓其有800毫秒的延時(shí)。根據(jù)前面章節(jié)可知,默認(rèn)情況下,Hystrix的超時(shí)時(shí)間為1秒,因此,還需要修改配置超時(shí)配置。代碼清單6-25,在application.yml中修改命令配置。

        代碼清單6-25:codes\06\6.4\spring-hystrix-invoker\src\main\resources\application.yml

hystrix:
  command:
    HelloClient#hello():
      execution:
        isolation:
          thread: 
            timeoutInMilliseconds: 500
      circuitBreaker:
        requestVolumeThreshold: 3

        注意,如果是針對(duì)全局配置,則使用與下面類似的配置片斷:

hystrix.command.default.circuitBreaker.requestVolumeThreshold // 默認(rèn)時(shí)間段內(nèi)發(fā)生的請(qǐng)求數(shù)
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds // 超時(shí)時(shí)間

        如果針對(duì)某個(gè)客戶端,如使用下面的配置片斷:

hystrix.command.CommandKey.circuitBreaker.requestVolumeThreshold

        Feign與Hystrix整合使用時(shí),會(huì)自動(dòng)幫我們生成CommandKey,格式為:“Feign客戶端接口名#方法名()”。例如本例中的客戶端為HelloClient,方法為hello,生成的CommandKey為“HelloClient#hello()”。而默認(rèn)情況下,生成的GroupKey為@FeignClient注解的name屬性。

        以上的配置中,我們針對(duì)了hello方法,設(shè)置了超時(shí)時(shí)間為500毫秒,而“/hello”服務(wù)超時(shí)時(shí)間為800毫秒,換言之,hello方法總會(huì)超時(shí)。另外,如果請(qǐng)求超過(guò)3次并且失敗率超過(guò)50%,斷路器將被打開(kāi)。編寫控制器,調(diào)用hello服務(wù),并查看斷路器的情況,請(qǐng)見(jiàn)代碼清單6-26。

        代碼清單6-26:HelloController.java

@RestController
public class HelloController {

    @Autowired
    HelloClient helloClient;

    @RequestMapping(value = "/feign/hello", method = RequestMethod.GET)
    public String feignHello() {
        // hello方法會(huì)超時(shí)
        String helloResult = helloClient.hello();
        // 獲取斷路器
        HystrixCircuitBreaker breaker = HystrixCircuitBreaker.Factory
                .getInstance(HystrixCommandKey.Factory
                        .asKey("HelloClient#hello()"));        
        System.out.println("斷路器狀態(tài):" + breaker.isOpen());
        return helloResult;
    }
}

        控制器的方法中,獲取了hello方法的斷路器,并輸出其狀態(tài)。接下來(lái),編寫一個(gè)測(cè)試客戶端,多線程訪問(wèn):http://localhost:9000/feign/hello/{index},也就是控制器的feignHello方法,客戶端請(qǐng)見(jiàn)代碼清單6-27。

        代碼清單6-27:

        06\6.4\spring-hystrix-invoker\src\main\java\org\crazyit\cloud\feign\TestFeignClient.java

public class TestFeignClient {
    
    public static void main(String[] args) throws Exception {
        // 創(chuàng)建默認(rèn)的HttpClient
        final CloseableHttpClient httpclient = HttpClients.createDefault();        
        // 調(diào)用多次服務(wù)并輸出結(jié)果
        for(int i = 0; i < 6; i++) {
            // 建立線程訪問(wèn)接口
            Thread t = new Thread() {
                public void run() {
                    try {
                        String url = "http://localhost:9000/feign/hello";
                        // 調(diào)用 GET 方法請(qǐng)求服務(wù)
                        HttpGet httpget = new HttpGet(url);
                        // 獲取響應(yīng)
                        HttpResponse response = httpclient.execute(httpget);
                        // 根據(jù) 響應(yīng)解析出字符串
                        System.out.println(EntityUtils.toString(response.getEntity()));
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            };
            t.start();
        }
        // 等待完成
        Thread.sleep(15000);
    }
}

        完成后,依次啟動(dòng)Eureka服務(wù)器、服務(wù)提供者、服務(wù)調(diào)用者,運(yùn)行代碼清單6-27,可看到“服務(wù)計(jì)用者”的控制臺(tái)輸出如下:

斷路器狀態(tài):false
斷路器狀態(tài):false
斷路器狀態(tài):false
斷路器狀態(tài):false
斷路器狀態(tài):true
斷路器狀態(tài):true

        根據(jù)輸出可知,斷路器已經(jīng)被打開(kāi)。

感謝各位的閱讀!關(guān)于“Spring Cloud中Feign與Hystrix整合的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!


本文標(biāo)題:SpringCloud中Feign與Hystrix整合的示例分析
轉(zhuǎn)載源于:http://www.xueling.net.cn/article/jegpjg.html

其他資訊

在線咨詢
服務(wù)熱線
服務(wù)熱線:028-86922220
TOP
主站蜘蛛池模板: 青青草97国产精品麻豆 | 后入内射国产一区二区 | 国内大量揄拍人妻精品視頻 | 国产视频手机在线观看 | 色射视频 | 少妇扒开毛茸茸的b自慰 | av久久在线观看 | 亚洲在线视频免费观看 | 国产日韩亚洲精品 | 亚洲大片精品永久免费 | 亚洲AV成人无码久久影院 | 免费精品国产自产拍在线观看图片 | 国产又粗又大又硬点视频 | 国产精品第13页 | 性做爰片免费视频毛片中文 | 亚洲一区二区三区四区的 | www.4虎影院| 免费一级做a爰片久久毛片潮 | 国产美女久久久 | japanese日本护士高潮 | 91天天综合 | 久久亚洲精品成人无码网站蜜桃 | 国产激情免费视频在线观看 | 色妹子综合网 | 日韩精品一区二区三区免费观看视频 | 国精品无码一区二区三区在线蜜臀 | 91久久蜜臀精品的社区功能 | 精品国产乱码久久久久久影片 | 国产女人AAA级久久久级 | 国产麻豆va精品视频 | 亚洲午夜免费福利视频 | 日本一区视频在线 | 国产成人亚洲精品无码影院BT | 禁漫天堂久久久久久久久久 | 欧美丰满大胆少妇xxxooo | 亚洲AV天天做在线观看 | 中国末成年videos水多 | 99热在线观看精品 | 狠狠CAO2020高清视频 | 亚洲有无码av在线播放 | 国产91丝袜香蕉在线播放 |