【问题标题】:@TransactionalEventListener, @Transactional and @Retryable flow@TransactionalEventListener、@Transactional 和 @Retryable 流
【发布时间】:2018-02-14 18:29:40
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-30
      • 2013-06-22
      • 1970-01-01
      • 2021-06-19
      • 2021-06-27
      • 2017-11-08
      • 2023-03-10
      • 2019-03-27
      相关资源
      最近更新 更多