在application.properties配置文件中加入如下配置:
將全局的默認超時時間由1s修改為3s,但是配置未起作用。
Archaius 默認支持兩種方式來加載本地的配置文件:
使用註解的方式,為方法添加hystrix斷路器。
在resources\config.properties中進行配置:
使用Hystrix後,配置均會在 com.netflix.hystrix.AbstractCommand#AbstractCommand 類中組裝。
[圖片上傳失敗...(image-a9070e-1612084543977)]
註:需要註意的是,雖然在3個地方設置了 超時時間。但是只有4000ms的超時時間生效。
1. hystrix配置的優先級是怎麽樣的呢?
2. 如何為某個方法配置不同的hystrix策略?
優先級從低到高的配置:
註:全局配置是default的配置,而實例配置為commandKey配置。
默認情況下,Hystrix會使用 類名作為CommandGroup ,會使用 方法名作為CommandKey。 可以使用commandKey進行個性化的配置。參考1.3 如何使用
[圖片上傳失敗...(image-95f991-1612084543977)]
表示HystrixCommand.run()的執行時的策略,有以下兩種策略:
以下屬性控制 HystrixCommand.getFallback() 如何執行,這些屬性對隔離策略 THREAD 和 SEMAPHORE 都起作用。
此屬性設置從調用線程允許Hystrix.getFallback()方法允許的最大並發請求數,如果達到最大的並發量,則接下來的請求都會被拒絕並且拋出異常。
控制斷路器的行為。
默認值20。若是在10s(窗口時間)內,只收到19個請求且都失敗了,則斷路器也不會開啟。
斷路器跳閘後,在此值的時間內,hystrix會拒絕新的請求,只有過了這個時間,斷路器才會打開閘門。默認值5000ms
設置失敗百分比的閾值,如果失敗比率超過這個值,則斷路器跳閘並且進入fallback狀態。默認值:50
如果這個屬性true強制斷路器進入開路(跳閘)狀態,它將拒絕所有請求。
此屬性優先於circuitBreaker.forceClosed。默認值false
如果設置true,則強制使斷路器進行關閉狀態,此時會允許執行所有請求,無論是否失敗的次數達到circuitBreaker.errorThresholdPercentage值。默認值:false。
捕獲和HystrixCommand以及HystrixObservableCommand執行信息相關的配置屬性。
Hystrix保留斷路器使用和發布指標的時間。默認值:10000
metrics.rollingStats.timeInMilliseconds % metrics.rollingStats.numBuckets == 01
如:10000/10、10000/20是正確的配置,但是10000/7錯誤的。默認值:10
註:在高並發的環境裏,每個桶的時間長度建議大於100ms。
該屬性控制HystrixCommand使用到的Hystrix的上下文。
默認值:true
表示是否開啟日誌,打印執行HystrixCommand的情況和事件。默認值true
設置請求合並請求。
默認值:Integer.MAX_VALUE
默認值:10
是否對HystrixCollapser.execute() 和 HystrixCollapser.queue()開啟請求緩存
默認值:true
默認值:10
在1.5.9中添加。此屬性設置最大線程池大小。這是在不開始拒絕HystrixCommands的情況下可以支持的最大並發數量。請註意,此設置僅在您設置時生效allowMaximumSizeToDivergeFromCoreSize。在1.5.9之前,核心和最大尺寸始終相等。
默認值:10
設置最大的BlockingQueue隊列的值。如果設置-1,則使用SynchronousQueue隊列(無限隊列)。如果設置正數,則使用LinkedBlockingQueue隊列。默認值:-1
因為maxQueueSize值不能被動態修改,所有通過設置此值可以實現動態修改等待隊列長度。即等待的隊列的數量大於queueSizeRejectionThreshold時(但是沒有達到maxQueueSize值),則開始拒絕後續的請求進入隊列。
默認值:5
註:如果設置-1,則屬性不啟作用。
設置線程空閑多長時間後,釋放(maximumSize-coreSize )個線程。默認值1(分鐘)
設置allowMaximumSizeToDivergeFromCoreSize值為true時,maximumSize才有作用
默認值:false
官網——Hystrix的參數配置
Hystrix常用功能介紹
Hystrix源碼解析--從原生的lib開始使用hystrix(壹)