SpringCloud 傳播安全上下文或使用Spring范圍

2023-11-22 11:48 更新

如果要將某些線程本地上下文傳播到@HystrixCommand中,則默認聲明無效,因為默認聲明在線程池中執(zhí)行命令(如果超時)。通過要求Hystrix使用不同的“ 隔離策略 ”,可以通過配置或直接在批注中切換Hystrix來使用與調用方相同的線程。下面的示例演示了如何在注釋中設置線程:

@HystrixCommand(fallbackMethod = "stubMyService",
    commandProperties = {
      @HystrixProperty(name="execution.isolation.strategy", value="SEMAPHORE")
    }
)
...

如果使用@SessionScope@RequestScope,則同樣適用。如果遇到運行時異常,提示它找不到范圍內的上下文,則需要使用同一線程。

您還可以選擇將hystrix.shareSecurityContext屬性設置為true。這樣做會自動配置一個Hystrix并發(fā)策略插件掛鉤,以將SecurityContext從您的主線程轉移到Hystrix命令所使用的那個線程。Hystrix不允許注冊多個Hystrix并發(fā)策略,因此可以通過將自己的HystrixConcurrencyStrategy聲明為Spring bean來使用擴展機制。Spring Cloud在Spring上下文中尋找您的實現,并將其包裝在自己的插件中。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號