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

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

SpringCloud中Hystrix線程池隊列配置的示例分析

這篇文章主要介紹Spring Cloud中Hystrix線程池隊列配置的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

成都創新互聯專業為企業提供平安網站建設、平安做網站、平安網站設計、平安網站制作等企業網站建設、網頁設計與制作、平安企業網站模板建站服務,十載平安做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。

先看一下正確的Hystrix配置姿勢。

application.yml:

hystrix:
 threadpool:
  default:
   coreSize: 200 #并發執行的最大線程數,默認10
   maxQueueSize: 1000 #BlockingQueue的最大隊列數,默認值-1
   queueSizeRejectionThreshold: 800 #即使maxQueueSize沒有達到,達到queueSizeRejectionThreshold該值后,請求也會被拒絕,默認值5

接下來編寫一個測試類,來驗證幾種錯誤配置,看看會出現什么情況。

測試類代碼(A調用方):

/**
 * @Author: XiongFeng
 * @Description:
 * @Date: Created in 11:12 2018/6/11
 */
public class RepaymentHelperTest extends FundApplicationTests {

  @Autowired
  RepaymentHelper repaymentHelper;
  @Autowired
  private RouterFeign routerFeign;

  @Test
  public void hystrixTest() throws InterruptedException {

    for (int i = 0; i < 135; i++) {
      new Thread(new Runnable() {
        @Override
        public void run() {
          job();
        }
      }).start();
    }

    Thread.currentThread().join();
  }

  public void job() {
    String repaymentNo = "xf1002";
    String transNo = "T4324324234";
    String reqNo = "xf1002";
    String begintime = "20180831130030";
    String endtime = "20180831130050";

    TransRecQueryReqDto transRecQueryReqDto = new TransRecQueryReqDto();
    transRecQueryReqDto.setTransNo(transNo);
    transRecQueryReqDto.setBeginTime(begintime);
    transRecQueryReqDto.setEndTime(endtime);
    transRecQueryReqDto.setReqNo(reqNo);

    Resp> queryTransRecListResp = routerFeign.queryTransRec(new Req<>(repaymentNo, "2018080200000002", null, null, transRecQueryReqDto));

    System.out.println(String.format("獲取結果為:【%s】", JsonUtil.toJson(queryTransRecListResp)));
  }
}

這個測試類的作用就是創建135個線程,通過RouterFeign類并發請求B服務方,看看請求結果是否出現異常。

Feign調用代碼:

@FeignClient(value = "${core.name}", fallbackFactory = RouterFeignBackFactory.class, path = "/router")
public interface RouterFeign {

  /**
   * 代扣結果查詢
   * @param transRecQueryReqDtoReq
   * @return
   */
  @PostMapping("/queryTransRec")
  Resp> queryTransRec(@RequestBody Req transRecQueryReqDtoReq);

}

這個類,就是通過Feign方式去調用B服務方的客戶端

服務提供方代碼(B服務方):

/**
 * @Author: XiongFeng
 * @Description:
 * @Date: Created in 16:04 2018/5/24
 */
@Api("還款服務")
@RefreshScope
@RestController
@RequestMapping("/router")
public class TestController {

  private static Logger logger = LoggerFactory.getLogger(TestController.class);

  // 計數器
  private static AtomicInteger count = new AtomicInteger(1);

  @ApiOperation(value = "代扣結果查詢")
  @PostMapping("/queryTransRec")
  Resp> queryTransRec(@RequestBody Req transRecQueryReqDtoReq) throws InterruptedException {
    System.out.println(String.format("查詢支付結果......計數: %s", count.getAndAdd(1)));
    Thread.sleep(500);
    return Resp.success(RespStatus.SUCCESS.getDesc(), null);
  }

這個類的作用,就是一個服務提供方,計數并返回結果。

下面我們看一下幾種錯誤的配置。

案例一(將核心線程數調低,最大隊列數調大一點,但是隊列拒絕閾值設置小一點):

hystrix:
 threadpool:
  default:
   coreSize: 10
   maxQueueSize: 1000
   queueSizeRejectionThreshold: 20

此時的結果:

Spring Cloud中Hystrix線程池隊列配置的示例分析

左窗口是B服務方,右窗口是A調用方。從結果可以看出,調用135次,成功32次左右,其余線程全部拋異常。

案例二(將核心線程數調低,最大隊列數調小一點,但是隊列拒絕閾值設置大一點):

hystrix:
 threadpool:
  default:
   coreSize: 10
   maxQueueSize: 15
   queueSizeRejectionThreshold: 2000

此時的結果:

java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask@7d6d472b rejected from java.util.concurrent.ThreadPoolExecutor@17f8bcb7[Running, pool size = 3, active threads = 3, queued tasks = 15, completed tasks = 0]

Spring Cloud中Hystrix線程池隊列配置的示例分析

左窗口是B服務方,右窗口是A調用方。從結果可以看出,調用135次,成功25次左右,其余線程全部拋異常。。

案例三(將核心線程數調低,最大隊列數調大一點,但是隊列拒絕閾值不設置值):

hystrix:
 threadpool:
  default:
   coreSize: 10
   maxQueueSize: 1500

此時的結果:

java.util.concurrent.RejectedExecutionException: Rejected command because thread-pool queueSize is at rejection threshold.

Spring Cloud中Hystrix線程池隊列配置的示例分析

左窗口是B服務方,右窗口是A調用方。此時的結果和案例一的情況一樣,調用135次,成功47次左右,其余線程全部拋異常。報錯跟案例一一樣

案例四(將核心線程數調低,最大隊列數不設值,但是隊列拒絕閾值設置的比較大):

hystrix:
 threadpool:
  default:
   coreSize: 10
   queueSizeRejectionThreshold: 1000

此時的結果:

java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask@23d268ea rejected from java.util.concurrent.ThreadPoolExecutor@66d0e2f4[Running, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0]
at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2063)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:830)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1379)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)

Spring Cloud中Hystrix線程池隊列配置的示例分析

左窗口是B服務方,右窗口是A調用方。此時的結果和案例二的情況一樣,調用135次,成功10次左右,其余線程全部拋異常。報錯跟案例二一樣

下面來看一看正確的配置案例

案例一:將核心線程數調低,最大隊列數和隊列拒絕閾值的值都設置大一點):

hystrix:
 threadpool:
  default:
   coreSize: 10
   maxQueueSize: 1500
   queueSizeRejectionThreshold: 1000

此時的結果:

Spring Cloud中Hystrix線程池隊列配置的示例分析

左窗口是B服務方,右窗口是A調用方。此時的結果就完全正常了,并發請求了135次,全部成功!

以上是“Spring Cloud中Hystrix線程池隊列配置的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注創新互聯行業資訊頻道!


當前題目:SpringCloud中Hystrix線程池隊列配置的示例分析
分享地址:http://www.xueling.net.cn/article/jehooe.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 日韩区国产 | 亚洲午夜久久久影院 | 香港黄色录像片 | 亚洲精品乱码久久久一二三 | 国精产品999一区二区三区有限 | 无码av动漫精品一区二区免费 | 夜夜夜夜猛噜噜噜噜噜婷婷 | 午夜国产视频精品久久 | 91蜜臀精品国产自偷在线 | 久久亚洲av成人无码国产最大 | 豆奶成人短视频 | 最近中文字幕在线视频 | 国产精品精品自在线拍互動交流 | 性生交大片免费看图片 | 日韩色道| 国产精品黄大片在线播放 | 国产v片成人影院在线观看 免费在线看h | 91超碰caoporn97人人 | 国产精品人妻一区二区网站 | 好紧好湿好爽免费视频 | 日本亚洲中文字幕不卡 | 国内精品第一页 | 国产乱码精品一区二三 | 日本在线一二三区 | 在线免费观看av网址 | 国产好吊视频在线观看 | 人妻系列综合第一页 | 亚洲视频一级 | 欧美一区二区三区免费在线看 | 天天天天噜在线视频 | 中文字幕乱码一区av久久不卡 | 国内揄拍国内精品少妇国语 | 久久久无码精品成人A片小说 | 人妻精品动漫H无码 | 国产揄拍国产精品人妻蜜 | 亚洲精品无码久久久久AV老牛 | 韩日免费视频 | 成人97精品毛片免费看 | 婷婷人人爽人人爽人人片 | 高潮真紧好爽我视频 | 伊人久久综合无码中文字幕 |