当我在@Transactional
和@Retryable(value = StaleStateException.class) method foo()
的末尾发布CustomEvent时,它是如何处理的?
如果我在方法执行后的提交期间获得StaleStateException
,则@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)
不会被调用,而@Retryable
Spring会第二次调用foo()
。在这种情况下,第一个CustomEvent
的生命周期是什么?它会被清理干净吗?或者在foo()
的第二次成功通话后,@TransactionalEventListener()
会被调用两次?
答案 0 :(得分:0)
如果有人会遇到同样的担心,那么回答是TransactionalEventListener监听的事件只有事务时间。 RetryTemplate为每次调用@Retryable方法创建新事务,因此只有成功尝试的事件才会到达@TransactionalEventListener。