@TransactionalEventListener, @Transactional и @Retryable flow

Когда я опубликую CustomEvent в конце @Transactional а также @Retryable(value = StaleStateException.class) method foo()как это обрабатывается?

Если я получу StaleStateException во время принятия после выполнения метода, затем @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT) не позвонил и по @Retryable Весна позвонит foo() второй раз. И каков жизненный цикл первого CustomEvent в этом случае? Это будет убрано? Или после второго успешного вызова foo(),@TransactionalEventListener() будет вызываться дважды?

1 ответ

Если кто-то встретит то же самое беспокойство, ответ таков: события, прослушиваемые TransactionalEventListener, являются активными только во время транзакции. RetryTemplate создает новую транзакцию для каждого вызова метода @Retryable, поэтому в @TransactionalEventListener будут поступать только события из успешной попытки.

Другие вопросы по тегам