RabbitMQ:当某些东西从队列中弹出时的回调函数

时间:2012-04-26 19:31:26

标签: rabbitmq

不确定如何执行此操作,或者即使可以执行此操作。我需要编写一个侦听队列的函数,并在从中弹出某些东西时触发。

所以基本上: 将对象推送到队列 消费者从队列中弹出对象 **某些功能然后说,“'对象'已从队列中弹出”

这是可以用兔子做的事吗?

2 个答案:

答案 0 :(得分:0)

我打算假设您要通知生产者消费者已从队列中消费了消息。我将补充一点,我认为你可能在这里误解了MQ概念,要么你需要使用RPC方法,这可以用RabbitMQ完成,或者你需要重新设计你的系统。但是你需要的是可能的。

我会在生产者的线程中使用循环:

`GetResponse gr = channel.basicGet(queueName, false);`

使用false,以便下一条消息不会从队列中弹出。 然后

`int msgCount = gr.getMessageCount();`

将为您提供队列中的消息数。 之后睡觉很短的时间,然后再次检查。如果生产者向队列发送大量消息,这将非常困难。但是,如果你增加发送到队列的消息总数并删除你知道已消耗的消息,这将告诉你并知道消息是否被消费。

我不是百分之百,这将是没有问题的,我会重申,我认为你的设计出现问题是通过尝试这个。

答案 1 :(得分:0)

在审查了我的计划之后,我意识到我采用了错误的方法。我正在让我的消费者向我的程序发回一条消息,说这条消息已被阅读。这遵循更多的队列概念。