2015-12-07 4 views
2

В настоящее время я занимаюсь разработкой приложений Java с помощью Spring AMQP с RabbitMQ и хотел бы контролировать свои очереди и быть информированным, если некоторые события происходят, какСлушайте очереди RabbitMQ и получать уведомления о событиях

  • элемент был добавлены в очереди,
  • элемент был удален или
  • элемента был, но в очереди снова (отката).

Как я могу слушать такие события или что такое RabbitMQ-способ делать такие вещи?

+0

Что вы подразумеваете под «элементом»? "сообщение"? –

+0

Да, вот что я имел в виду. – mangei

+0

Я не мог понять пример использования для получения уведомления о «удалении сообщения». Не могли бы вы объяснить, пожалуйста. –

ответ

0

Чтобы получить сообщение асинхронно из очереди, необходимо использовать инфраструктуру конечных точек аннотированного прослушивателя. В двух словах, это позволяет вам выставить метод управляемого компонента в качестве конечной точки слушателя кролика.

@Component 
public class MyService { 

    @RabbitListener(queues = "myQueue") 
    public void processOrder(String data) { 
     ... 
    } 

} 

Проверить this Всякий раз, когда сообщение помещается в очередь myQueueprocessOrder метод срабатывает.

Для выполнения других требований вы также можете использовать spring events для контроля за любой работой, выполняемой в очереди. Как раз перед выполнением любой операции в очереди будет инициировано соответствующее событие.

+0

Вы хотите настроить систему событий для просмотра моих собственных методов, которые выполняют действия в очереди? Если да, это также обходной путь, который я сделал для получения желаемого поведения, но, к сожалению, это не отвечает моему вопросу. – mangei

+0

no processOrder - это метод, который получает все, что добавляется в очередь. Этот метод действует как подписчик, а не издатель в очередь. Проверьте документы Spring AMqp. – underdog

Смежные вопросы