2017-09-06 3 views
0

@Transactional@Retryable(value = StaleStateException.class) method foo()の最後にCustomEventを公開すると、どのように処理されますか?@ TransactionalEventListener、@ Transactionalおよび@ Retetable flow

私はメソッドの実行後にコミット中にStaleStateExceptionを取得した場合、その後、@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)は呼ばないであろうと@Retryableで春がfoo()秒の時間を呼び出します。この場合、最初にCustomEventのライフサイクルは何ですか?それはきれいにされるだろうか?または、foo()の2回目の成功呼び出し後に、@TransactionalEventListener()が2回呼び出されますか?

答えて

0

誰かが同じ不安を抱える場合は、TransactionalEventListenerでリッスンしたイベントはトランザクション時のみ有効であると答えます。 RetryTemplateは@Retryableメソッドのすべての呼び出しに対して新しいトランザクションを作成するため、試行が成功したイベントだけが@TransactionalEventListenerに到着します。

関連する問題