【问题标题】:Listen to RabbitMQ queue and get notifications on events监听 RabbitMQ 队列并获取事件通知
【发布时间】:2016-03-12 16:36:28
【问题描述】:

我目前正在使用带有 RabbitMQ 的 Spring AMQP 开发一个 Java 应用程序,并希望监视我的队列并在发生某些事件时得到通知,例如

  • 元素已添加到队列中,
  • 元素被移除,或
  • 元素又在队列中(回滚)。

我怎样才能收听这些事件,或者 RabbitMQ 做这些事情的方式是什么?

【问题讨论】:

  • “元素”是什么意思? “消息”?
  • 是的,我就是这个意思。
  • 我无法理解在message removed 上获取通知的用例。请您进一步解释一下。
  • @Shirish 我想创建一个监控应用程序,它显示由于事务回滚,哪些消息进入队列、从队列中取出以及返回队列。因此,我想显示队列的当前状态/消息(例如在 UI 上),并且我想在队列状态发生变化时获取更新/通知。 (例如,以便我可以更新 UI)。

标签: java queue rabbitmq listener spring-amqp


【解决方案1】:

从队列异步接收消息是使用带注释的侦听器端点基础设施。简而言之,它允许您将托管 bean 的方法公开为 Rabbit 侦听器端点。

@Component
public class MyService {

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

}

检查this 每当有消息推送到队列时myQueueprocessOrder 方法就会被触发。

对于您的其他要求,您还可以使用spring events 来监视对队列执行的任何操作。就在对队列执行任何操作之前,将触发相应的事件。

【讨论】:

  • 您的意思是设置一个事件系统来监视我自己的方法,这些方法在队列上执行操作?如果是,这也是我为获得所需行为所做的解决方法,但遗憾的是这并没有回答我的问题。
  • no processOrder 是接收添加到队列中的任何内容的方法。此方法的作用类似于队列的订阅者而不是发布者。检查 Spring AMqp 文档。
猜你喜欢
  • 2017-07-30
  • 2018-10-27
  • 2018-08-26
  • 2020-11-07
  • 2015-02-22
  • 2017-11-10
  • 2015-09-22
  • 1970-01-01
  • 2016-12-26
相关资源
最近更新 更多