spring cloud hystrix 超時(shí)時(shí)間使用方式詳解
我們?cè)谑褂煤笈_(tái)微服務(wù)的時(shí)候,各個(gè)服務(wù)之前會(huì)有很多請(qǐng)求和交叉業(yè)務(wù)。這里會(huì)引起雪崩、超時(shí)等異常處理。SpringCloud Hystrix服務(wù)降級(jí)、容錯(cuò)機(jī)治理使 hystrix 有很好的支持,引入后實(shí)現(xiàn)斷路器功能。
1:pom 引入jar包
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency>
2:添加注解
Application中增加 @EnableCircuitBreaker 開(kāi)啟hystrix功能
3:配置文件配置
注意:feign中的hystrix的enabled屬性要設(shè)置true
hystrix: command: transferApprove: # 這里是要設(shè)置超時(shí)時(shí)間的方法,如新增其他方法需要增加此節(jié)點(diǎn)信息。 execution: isolation: thread: timeoutInMilliseconds: 6000 #默認(rèn)連接超時(shí)時(shí)間是1秒
4:增加代碼
代碼注意fastOrBatchFallback的出參和入?yún)⒁驮O(shè)置了@HystrixCommand注解方法一致,否則會(huì)拋出異常。
@Override @HystrixCommand(fallbackMethod = 'fastOrBatchFallback') public ResultModel transferApprove(TransferApproveDto dto) { log.info('調(diào)動(dòng)流程審批:{}', dto); if (StringUtils.isEmpty(dto.getOperatorId())|| StringUtils.isEmpty(dto.getFlowNos())|| StringUtils.isEmpty(dto.getOperatorId())) { return ResultModel.fail(-1, '參數(shù)異常'); } } public ResultModel fastOrBatchFallback(TransferApproveDto transferApproveDto) { log.info('請(qǐng)求ps服務(wù)超時(shí),請(qǐng)稍后再試.入?yún)?{}', GsonUtils.toJsonString(transferApproveDto)); return ResultModel.fail('請(qǐng)求服務(wù)超時(shí),請(qǐng)稍后再試', 'ps服務(wù)超時(shí),請(qǐng)稍后再試'); }
5: 待解決和研究問(wèn)題?
hystrix 執(zhí)行了Fallback之后是否繼續(xù)走其他邏輯,目前可知的是繼續(xù)走其他邏輯,如果讓它不觸發(fā)后序的邏輯怎么配置?
這里先打一個(gè)問(wèn)號(hào),歡迎大家一起討論和解決。
到此這篇關(guān)于spring cloud hystrix 超時(shí)時(shí)間使用方式的文章就介紹到這了,更多相關(guān)spring cloud超時(shí)時(shí)間內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. el-input無(wú)法輸入的問(wèn)題和表單驗(yàn)證失敗問(wèn)題解決2. 父div高度不能自適應(yīng)子div高度的解決方案3. ASP動(dòng)態(tài)include文件4. 不要在HTML中濫用div5. Vue中原生template標(biāo)簽失效如何解決6. XML入門的常見(jiàn)問(wèn)題(三)7. XML 非法字符(轉(zhuǎn)義字符)8. vue跳轉(zhuǎn)頁(yè)面常用的幾種方法匯總9. CSS3實(shí)例分享之多重背景的實(shí)現(xiàn)(Multiple backgrounds)10. js開(kāi)發(fā)中的頁(yè)面、屏幕、瀏覽器的位置原理(高度寬度)說(shuō)明講解(附圖)
