Spring Boot @JmsListener Interceptor - PullRequest
       47

Spring Boot @JmsListener Interceptor

0 голосов
/ 22 января 2020

В моем приложении есть сообщения, перемещающиеся из одной очереди в другую, и я хочу добавить идентификатор сообщения в свои журналы. Я пытаюсь выяснить, могу ли я перехватить сообщение до его фактической обработки, и установить идентификатор сообщения в полях MD C, чтобы я мог отслеживать это сообщение во всех очередях. До сих пор у меня не было успеха. Есть ли какое-либо существующее решение?

1 Ответ

1 голос
/ 22 января 2020

Это работает, но тогда я не могу получить доступ к атрибутам сообщения. Есть ли какой-нибудь контекст сообщения где-нибудь в компонентах jms, которые я могу переопределить или получить к ним доступ, чтобы получить атрибуты сообщений для регистрации?

Вы можете добавить необработанный JMS Message (или просто свойство идентификатора сообщения) в качестве дополнительного параметра к @JmsListener (и получить к нему доступ с помощью invocation.getArguments()), или вы можете обернуть весь адаптер слушателя вместо вашего бина слушателя. Используйте реестр контейнера, чтобы получить ссылку на контейнер, затем container.setMessageListener(wrap(container.getMessageListener()));.

...