0

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

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

4

1 回答 1

0

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

于 2017-09-08T06:40:05.433 回答