1. 程式人生 > >Hystrix 執行緒 命令名稱commandKey、分組groupKey以及執行緒池劃分threadPoolKey

Hystrix 執行緒 命令名稱commandKey、分組groupKey以及執行緒池劃分threadPoolKey

配置方式:@HystrixCommand(fallbackMethod = "helloFallback", groupKey = "Group1", threadPoolKey = "HystrixFooServiceGaGa")

1.其中commandKey目前還沒有發現有什麼用,下面重點看groupKey 和 threadPoolKey

當上面3個屬性都不配置的時候,比如study-spring-cloud-consumer中的HystrixUserService 這個類中所有標明瞭@HystrixCommand標的方法,都是使用1個執行緒池(執行緒名用的是類名

hystrix-HystrixUserService-1 ),而如果有HystrixUserService2,裡面也有@HystrixCommand標的方法,那麼執行的時候使用的是另一個執行緒池,所以預設就已經是執行緒池隔離的

2.如果同時配置了groupKey 和 threadPoolKey ,那麼具有相同的threadPoolKey的使用同一個執行緒池;

3.如果只配置了groupKey ,那麼具有相同的groupKey 的使用同一個執行緒池;比如如果配置的是@HystrixCommand(fallbackMethod = "helloFallback", groupKey = "Group1"),那麼執行緒名就是hystrix-Group1-*

總結:《Spring Cloud 微服務實戰》推薦:通常情況下,儘量通過 HystrixThreadPoolKey 的方式來指定執行緒池的劃分, 而不是通過組名的預設方式實現劃分, 因為多個不同的命令可能 從業務邏輯上來看屬於同 一個組, 但是往往從實現本身上需要跟其他命令進行隔離。