我們在使用后臺微服務的時候,各個服務之前會有很多請求和交叉業務,這里會引起雪崩、超時等例外處理,SpringCloud Hystrix服務降級、容錯機治理使 hystrix 有很好的支持,引入后實作斷路器功能,
1:pom 引入jar包
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
2:添加注解
Application中增加 @EnableCircuitBreaker 開啟hystrix功能
3:組態檔配置
注意:feign中的hystrix的enabled屬性要設定true
hystrix:
command:
transferApprove: # 這里是要設定超時時間的方法,如新增其他方法需要增加此節點資訊,
execution:
isolation:
thread:
timeoutInMilliseconds: 6000 #默認連接超時時間是1秒
4:增加代碼
代碼注意fastOrBatchFallback的出參和入參要和設定了@HystrixCommand注解方法一致,否則會拋出例外,
@Override
@HystrixCommand(fallbackMethod = "fastOrBatchFallback")
public ResultModel transferApprove(TransferApproveDto dto) {
log.info("調動流程審批:{}", dto);
if (StringUtils.isEmpty(dto.getOperatorId())
|| StringUtils.isEmpty(dto.getFlowNos())
|| StringUtils.isEmpty(dto.getOperatorId())) {
return ResultModel.fail(-1, "引數例外");
}
}
public ResultModel fastOrBatchFallback(TransferApproveDto transferApproveDto) {
log.info("請求ps服務超時,請稍后再試.入參:{}", GsonUtils.toJsonString(transferApproveDto));
return ResultModel.fail("請求服務超時,請稍后再試", "ps服務超時,請稍后再試");
}
5: 待解決和研究問題?
hystrix 執行了Fallback之后是否繼續走其他邏輯,目前可知的是繼續走其他邏輯,如果讓它不觸發后序的邏輯怎么配置?
這里先打一個問號,歡迎大家一起討論和解決,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/244823.html
標籤:java
