OSIV включил репозиторий Spring Data JPA, не выполняющий запрос DML, когда он вызывается из подписчика Spring Redis, но работает при вызове как веб-запрос http - PullRequest
0 голосов
/ 07 мая 2020

У меня есть микросервис Spring Boot, у которого есть конечная точка для удаления записи из таблицы. Для этого я использую Spring Data JPA. Он отлично работает, когда я вызываю api, отправляю HTTP-запрос и репозиторий JPA удаляет данные. Включен OSIV, который автоматически регистрирует EntityManager, создает соединение с базой данных и обеспечивает его доступность на протяжении всего срока службы веб-запроса.

У меня есть подписчик сообщений Redis, предоставленный Spring Redis в том же приложении, которое прослушивает событие и вызывает тот же репозиторий JPA для удаления данных из таблицы. Я заметил, что репозиторий JPA не выполняет удаление / обновление / вставку при вызове от подписчика. Я понимаю, что существует проблема с транзакцией, которая не создается в этом потоке. Я пробовал использовать @Transactional, но это все равно не удается, так как транзакция отсутствует.

Пожалуйста, помогите мне, если Redis Message Container требует другой конфигурации для включения транзакции для репозитория JPA.

...