TransactionalEventListener не будет запущен - PullRequest
1 голос
/ 11 февраля 2020

У меня проблема с @TransactionalEventListener.

Учитывая :

  • Kotlin 1.3.50
  • Spring Webflux
  • Spring Data
  • Hibernate 5
  • Postgres JDB C (не RDB C!)

Что происходит :

Запрос к контроллеру выполнен.

Служба выполнила некоторую работу в методе, помеченном как @Transactional событие и опубликованное событие.

Ответ возвращен клиенту

Слушатель события, помеченный как @Async, @TransactionalEventListener и @Transactional не запускается.

Что я сделал:

Я отладил в метод обслуживания, который публикует событие, чтобы выяснить, является ли фактическая транзакция выполняется с помощью некоторого служебного метода stati c, который я не помню, который сказал мне то, что я подозревал - он находится в процессе.

Затем я включил отладочный вывод, чтобы увидеть журнал, говорящий: No transaction is in progress. Discarding event.

Я имею в виду, что обе публикующие и потребляющие стороны имеют аннотацию @Transactional. Никаких изменений к стандартным параметрам аннотаций не сделано.

Я обнаружил похожую ситуацию в этом вопросе вопрос , но никто не ответил на это.

Также Я прочитал статью в dzone , но, похоже, ничего не говорится о моем случае.

Обходной путь:

Я могу избежать этого, либо заменив @TransactionalEventListener на @EventListener (увы, удалите обработку, связанную с транзакцией), либо изменив параметр fallbackExecute на true, который фактически совпадает с первым решением.

Предполагаемые стороны:

  1. Возможно, может иметь место отсутствие менеджера реактивных транзакций в среде webflux? И какая-то странная ошибка, не учитывающая JpaTransactionManager?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...