0

不知道如何做到这一点,或者即使它可以做到。我需要编写一个函数来侦听队列并在从队列中弹出某些内容时触发。

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

这是可以用兔子做的吗?

4

2 回答 2

0

在回顾了我的计划后,我意识到我想出了错误的方法。我让我的消费者向我的程序发回一条消息,说这条特定的消息已被阅读。这遵循了更多的队列概念。

于 2012-05-06T18:40:57.073 回答
0

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

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

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

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

`int msgCount = gr.getMessageCount();`

会给你队列中的消息数量。之后睡一小会儿,然后再次检查。如果生产者向队列发送大量消息,这将非常困难。但是,如果您增加发送到队列的消息总数并删除您知道已被消费的消息,这将使您了解消息是否已被消费。

我不是 100% 认为这不会有问题,我会重申,我认为通过尝试这个方法你的设计有问题。

于 2012-05-06T08:20:48.420 回答