@TransactionalEventListener,@ Transaction和@Retryable流程

时间:2017-09-06 10:00:15

标签: java spring transactions spring-data-jpa spring-retry

当我在@Transactional@Retryable(value = StaleStateException.class) method foo()的末尾发布CustomEvent时,它是如何处理的?

如果我在方法执行后的提交期间获得StaleStateException,则@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)不会被调用,而@Retryable Spring会第二次调用foo()。在这种情况下,第一个CustomEvent的生命周期是什么?它会被清理干净吗?或者在foo()的第二次成功通话后,@TransactionalEventListener()会被调用两次?

1 个答案:

答案 0 :(得分:0)

如果有人会遇到同样的担心,那么回答是TransactionalEventListener监听的事件只有事务时间。 RetryTemplate为每次调用@Retryable方法创建新事务,因此只有成功尝试的事件才会到达@TransactionalEventListener。

相关问题