欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

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

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

成都創(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對Hystrix提供了支持,為“服務(wù)調(diào)用者”加入以下Feign依賴:

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

        在application.yml中打開Feign的Hystrix開關(guān),請見以下配置:

feign:
  hystrix:
    enabled: true

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

@SpringBootApplication
@EnableDiscoveryClient
@EnableCircuitBreaker
@ServletComponentScan
@EnableFeignClients

        新建Feign接口,調(diào)用“服務(wù)提供者(spring-hystrix-provider)”的“/hello”服務(wù),請見代碼清單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客戶端無異,僅僅設(shè)置了處理回退的類,回退類實(shí)現(xiàn)了客戶端接口。為了能測試效果,修改服務(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

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

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

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

hystrix.command.CommandKey.circuitBreaker.requestVolumeThreshold

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

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

        代碼清單6-26:HelloController.java

@RestController
public class HelloController {

    @Autowired
    HelloClient helloClient;

    @RequestMapping(value = "/feign/hello", method = RequestMethod.GET)
    public String feignHello() {
        // hello方法會超時(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)。接下來,編寫一個(gè)測試客戶端,多線程訪問:http://localhost:9000/feign/hello/{index},也就是控制器的feignHello方法,客戶端請見代碼清單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++) {
            // 建立線程訪問接口
            Thread t = new Thread() {
                public void run() {
                    try {
                        String url = "http://localhost:9000/feign/hello";
                        // 調(diào)用 GET 方法請求服務(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);
    }
}

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

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

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

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

本文標(biāo)題:SpringCloud中Feign與Hystrix整合的示例分析
轉(zhuǎn)載來源:http://aaarwkj.com/article26/jegpjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、品牌網(wǎng)站建設(shè)、微信小程序、網(wǎng)站維護(hù)、網(wǎng)站設(shè)計(jì)、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
男人的天堂av东京热一区| 国产三级在线观看91| 精品av一区二区在线| 亚洲欧洲中文字幕一区二区| 中文字幕一区二区三天| av在线播放网址网站| 欧美一级特黄大片做受| 视频二区国产欧美日韩| 亚洲一区二区视频在线播放| 日韩视频专区一区二区| 亚洲精品国产av成人| 一区二区三区人妻系列| 午夜精品一区二区三区在线视频| 午夜少妇福利在线观看| 中国女人内射91熟女| 人妻av天堂综合一区| 中文字幕色视频在线观看| 一区二区高清免费日本| 亚洲美女国产精选999| 亚洲午夜福利天堂社区| 人人妻夜夜天天俺去添噜| 亚洲欧美一区二区国产| 久久国产精品一区av瑜伽| 亚洲黄色成人在线观看| 精品福利视频一区二区| 91麻豆成人精品国产| 中文字幕乱码高清免费| 亚洲国产成在人网站天堂| 三级精品一区二区三区| 人妖伪娘在线观看一区二区三区| 久久人妻精品一区二区三区| 久激情内射婷内射蜜桃| 亚洲男人天堂av电影| 国产老妇伦国产熟女高清| 久久精品国产91麻豆| 国产成人久久精品二区三区| 三欲一区二区三区中文字幕| 亚洲一区欧美二区日韩三区| 久久久久久亚洲精品人妻| 激情五月天色婷婷久久| 91在线国产手机视频|