亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

加載時編織 (AspectJ):Hystrix 中斷事務傳播

加載時編織 (AspectJ):Hystrix 中斷事務傳播

慕桂英3389331 2023-04-26 13:59:37
@EnableLoadTimeWeaving我在與 AspectJ + @Transactional+的組合中遇到問題@HystrixCommand。所以,我已經像這樣配置了加載時編織:@EnableLoadTimeWeaving(aspectjWeaving = ENABLED)@EnableCaching(mode = AdviceMode.ASPECTJ)@EnableTransactionManagement(mode = AdviceMode.ASPECTJ)加上儀器配置。我有一個 bean A,@Transactional在其中用和方法注釋,用 注釋@HystrixCommand。然后我有一個 bean B,也用 注釋@Transactional,但是有propagation = Propagation.MANDATORY,這意味著它需要現有事務,否則失敗。這個 bean 中還有一個方法,用@HystrixCommand.最終,當我從 bean A 的方法調用 bean B 的方法時,我得到:No existing transaction found for transaction marked with propagation 'mandatory'。我找了幾個小時的問題:一切似乎都配置正確,所以我幾乎放棄了。然后我只是試圖@HystrixCommand從方法中刪除。瞧:事務傳播開始正常工作,異常消失了。所以我想知道:為什么會@HystrixCommand中斷事務傳播?它與我使用加載時編織的事實有某種關系嗎?還是預期的行為?有人可以闡明一下嗎?
查看完整描述

1 回答

?
寶慕林4294392

TA貢獻2021條經驗 獲得超8個贊

HystrixCommands您所說的問題可能與在隔離線程中執行的事實有關:

默認和推薦的設置是使用線程隔離 (THREAD) 運行 HystrixCommands,使用信號量隔離 (SEMAPHORE) 運行 HystrixObservableCommands。

在線程中執行的命令具有額外的保護層,以防止超出網絡超時所能提供的延遲。

通常,只有當調用量如此之大(每個實例每秒數百次)以至于單獨線程的開銷太高時,您才應該為 HystrixCommands 使用信號量隔離;這通常只適用于非網絡呼叫。


查看完整回答
反對 回復 2023-04-26
  • 1 回答
  • 0 關注
  • 116 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號