@HystrixCommand(fallbackMethod = "str_fallbackMethod",
groupKey = "strGroupCommand",
commandKey = "strCommard",
threadPoolKey = "strThreadPool",
commandProperties = {
//設定隔離策略,THREAD表示執行緒池SEMAPHORE:信號地隔離
@HystrixProperty(name = "execution.isolation. strategy", value = "THREAD"),
//當隔離策略選擇信號地隔離的時候,用來沒置信號地的大小(最大并發數)
@HystrixProperty(name = "execution.isolation. semaphore.maxConcurrentRequests", value = "10"),
//配置命令執行的超時時間
@HystrixProperty(name = "execution.isolation.thread.timeoutinMilliseconds", value = "10"),
//懸否啟用超時時間
@HystrixProperty(name = "execution.timeout. enabled", value = "true"),
//執行超時的時候是否中斷
@HystrixProperty(name = "execution.isolation.thread.interruptOnTimeout", value = "true"),
//執行被取消的時候是否中斷
@HystrixProperty(name = "execution.isolation.thread. interruptOnCancel", value = "true"),
//允許回呼方法執行的最大并發數
@HystrixProperty(name = "fallback.isolation.semaphore.maxConcurrentRequests", value = "10"),
//服務降級是否啟用,是否執行回湖函式
@HystrixProperty(name = "fallback.enabled", value = "true"),
@HystrixProperty(name = "circuitBreaker.enabled", value = "true"),
//該屬性用來設定在演動時間窗中,斷路器熔斷的最小請求數,例如,默認該值為20的時候,
//如果滾動時間窗(默認10秒)內僅收到719個請求,即使這19個請求都失敗了,斷路器也不會打開,
@HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "20"),
//該屬性用來設定在模動時間窗中,表示在滾動時間窗中,在請求數量超過
// circuitBreaker. requestVolumeThreshold的情況下,如果錯誤請求數的百分比超過50,
//就把斷路器設定為“打開"狀態,否則就設定為“關閉"狀態,
@HystrixProperty(name = "circuitBreaker.errorThresholdPercentage", value = "50"),
//該屬性用來設定當斷路器打開之后的休眠時間窗,休眠時間窗結束之后,
//會將斷路器置為“半開"狀態,嘗式熔斷的請求命令,如果依然失敗就將斷路器繼續設定為“打開"狀態,
//如果成功就設定為“關閉"狀態,
@HystrixProperty(name = "circuitBreaker.sleeplindowinMilliseconds", value = "5000"),
//斷路器強制打開
@HystrixProperty(name = "circuitBreaker.forceOpen", value = "false"),
//斷路器強制關閉
@HystrixProperty(name = "circuitBreaker.forceClosed", value = "false"),
//滾動時間窗設定,該時間用于斷路器判斷健康度時需要收集資訊的持續時間
@HystrixProperty(name = "metrics.rollingStats.timeinMilliseconds", value = "10000"),
//該屬性用來設定凝動時間窗統計指標資訊時劃分"鎊"的數量,斷路器在收集指標資訊的時候會根據//設定的時間窗長度拆分成多個“裙"來翼計各度量值,每個"裙"記錄了一段時間內的采集指標,//比如10秒內拆分成10個“褲”收集這樣,所以timeinilliseconds 必須能被numBuckets 整除, 否則會拋例外
@HystrixProperty(name = "metrics.rollingStats.numBuckets", value = "10"),
//動時間窗設定,該時間用于斷路器判斷健康度時需要收集資訊的持續時間
@HystrixProperty(name = "metrics.rollingStats.timeinMilliseconds", value = "10000"),
//該屬性用來設定模動時間窗統計指標資訊時劃分"榜"的數量,斷路器在收集指標資訊的時候會根據
//設定的時間窗長度拆分成多個“褲"來累計各度量值,每個"榜”記錄了一段時間內的采集指標,
//比如10秒內拆分成10個"榜"收集這樣,所以timeinMilliseconds必須能被numBuckets整除,否則會拋例外
@HystrixProperty(name = "metrics.rollingStats. numBuckets", value = "10"),
//該屬性用來設定對命令執行的延遲是否使用百升位數來跟蹤和計算,如果設定為false,那么所有的概要統計都將回傳-1.
@HystrixProperty(name = "metrics.rollingPercentile. enabled", value = "false"),
//該屬性用來設定百分位統計的凝動視窗的持續時間,單位為喜秒,
@HystrixProperty(name = "metrics.rollingPercentile.timeInMilliseconds", value = "6000e"),
//該屬性用央設定百分位統計模動視窗中使用“榜”的數量
@HystrixProperty(name = "metrics.rollingPercentile. numBuckets", value = "60000"),
//該屬性用來設定在執行程序中每個“桶”中保留的最大執行次數,如果在模動時間窗內發生超過該設定值的執行況數,
//就從最初的位置開始重寫,例如,將該值設定為100,滾動視窗為10秒,若在10秒內一個“捅”中發生了500次執行
//那么該“桶”中只保留最后的100,次執行的統計,另外,增加該值的大小將會增加記憶體量的消耗,并增加排序百分位數所需的計算時間,
@HystrixProperty(name = "metrics.rollingPercentile. bucketSize", value = "100"),
//該屬性用來設定采集影響斷路器狀態的健康快照(請求的成功、錯誤百分比)的間隔等待時間,
@HystrixProperty(name = "metrics. healthSnapshot.intervalinMilliseconds", value = "500"),
//懸否開啟請求快取
@HystrixProperty(name = "requestCache. enabled", value = "true"),
// HystrixCommand的執行和事件懸否列印日志到HystrixRequestLog中
@HystrixProperty(name = "requestLog.enabled", value = "true"),
@HystrixProperty(name = "metrics.rollingPercentile.bucketSize", value = "100"),
//該屬性用夾設定采集影響斷路器狀態的健康快照(請求的成功、錯誤百分比)的間隔等待時間,
@HystrixProperty(name = "metrics. healthSnapshot.intervalinMilliseconds", value = "500"),
//是否開啟請求快取
@HystrixProperty(name = "requestCache.enabled", value = "true"),
// Hystrixcommand的執行和事件是否列印日志到HystrixRequestLog中
@HystrixProperty(name = "requestLog. enabled", value = "true"),
},
threadPoolProperties = {
//該引數用來設定執行命令執行緒地的核心執行緒數,該值也就是命令執行的最大并發量
@HystrixProperty(name = "coreSize", value = "10"),
//該引數用來設定執行緒池的最大佇列大小,當沒置為-1時,執行緒池將使用SynchronousQueue實作的佇列
//否則將使用LinkedBlockingQueue實作的佇列,
@HystrixProperty(name = "maxQueuesize", value = "-1"),
//該引數用來為佇列設定拒絕閾值,通過該引數,即使佇列沒有達到最大值也能拒絕請求,
//該引數主要是對LinkedBlockingQueue佇列的補充,因為LinkedBlockingQueue
//佇列不能動態修改它的物件大小,而通過該屬性就可以調整拒絕請求的佇列大小了,
@HystrixProperty(name = "queueSizeRejectionThreshold", value = "5")
})
public String paymentInfo_Timeout(Integer id) {
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "執行緒池" + Thread.currentThread().getName() + " id" + id;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/252103.html
標籤:其他
