Как работает @TransactionalEventListener в Spring?

Middle
290 просмотров
AFK Offer AI

@TransactionalEventListener позволяет слушать ApplicationEvents с привязкой к фазе транзакции. phase=AFTER_COMMIT — событие обрабатывается только если транзакция закоммичена (дефолт). Это решает проблему: publishEvent внутри транзакции → listener вызывается до commit → пытается читать данные которых ещё нет. AFTER_COMMIT гарантирует что данные в БД. Но: listener выполняется уже вне исходной транзакции — нужна своя транзакция для listeners с DB операциями (@Transactional(propagation=REQUIRES_NEW)).

Следующий вопрос

Что такое backpressure в реактивном программировании?