2012-04-26 50 views
0

不知道如何执行此操作,或者即使可以完成。我需要编写一个函数来侦听队列,并在出现某些事件时触发它。RabbitMQ:回拨函数用于何时弹出队列

所以基本上: 推对象排队 消费者持久性有机污染物从队列 **一些功能接着说,“‘对象’已经从队列弹出”

这是不是可以做W /兔子对象?

+0

这个函数应该在哪里被解雇?在制片人还是在消费者的过程中? – 2012-04-26 22:35:33

回答

0

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

0

我打算假定你的意思是你要通知生产者消费者已经从队列中消费了一条消息。我会补充一点,我想你可能误解了MQ的概念,或者你需要使用RPC方法,这可以用RabbitMQ来完成,或者你需要重新设计你的系统。然而你需要的是可能的。

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

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

利用虚假从而使下一消息不弹出队列。 然后

`int msgCount = gr.getMessageCount();` 

会给你队列上的消息数量。 后来睡了很短的时间,然后再次检查。如果生产者发送大量消息到队列中,这将是非常困难的。但是,如果您递增发送到队列的消息总数,并删除您已知消息的消息,则会提供您并了解消息是否已被消耗。

我不是100%,这将是无问题的,我会重申,我认为你的设计有些问题是通过尝试这样做的。