Как реализовать ApplicationListener в DirectMessageListenerContainer - PullRequest
1 голос
/ 14 октября 2019

Может ли кто-нибудь рассказать, как программно зарегистрировать ApplicationListener в DirectMessageListenerContainer (spring rabbitmq) для обработки ListenerContainerConsumerFailedEvent

Заранее спасибо.

1 Ответ

0 голосов
/ 14 октября 2019

Слушатель не зарегистрирован в контейнере;он просто добавляется как @Bean в контекст приложения Spring;контейнер публикует событие, и Spring отправляет его каждому зарегистрированному слушателю.

EDIT

Не помещайте код в комментарии;они плохо отображаются - всегда редактируйте вопрос и добавляйте комментарий, который вы сделали.

Создание таких контейнеров означает, что вы упустите все достоинства Spring и введенные зависимости;Лучше добавить DirectRabbitListenerContainerFactory @Bean в контекст приложения и использовать его для создания контейнеров - таким образом будет добавлен издатель событий.

Вам нужен только один слушатель;он будет получать события из всех контейнеров.

Если вы вообще не используете Spring (кроме spring-rabbit), тогда вам нужно самостоятельно удовлетворить все интерфейсы ...Aware контейнера и вызвать afterPropertiesSet().

В этом случае вы должны позвонить setApplicationEventPublisher() своему издателю, который получит событие (я).

...