2012-11-05 49 views
7

我希望消费者每次收到消息时都执行一些操作。消费者必须全天候地“聆听”队列,还是只能在收到适当的消息时才运行?RabbitMQ消费者点播?

回答

2

我不确定你的问题是否合理。消息只能由队列的消费者从队列中接收。要知道消息是否在队列中,必须查看队列。做到这一点的唯一方法就是成为消费者。

如果您确实希望可以有一个运行管理插件的命令行界面的脚本。这可以轮询队列,当它的大小超过一个时,可以启动一个程序来运行消费者从队列中消费。

这没有任何意义。如果它只是坐在等待队列,别的什么都不做,它几乎不会消耗任何资源,所以我没有看到什么问题会一天24小时运行消费者。

当然,消费者不必24/7运行,这就是MQ的一部分。它是异步的。当生产者写入队列时,消费者不必运行。因此,您可以定期执行一项计划任务来运行您的客户,以检查和处理队列中的消息。但我不认为这是你想要的。

整个聆听点是:在信息出现之前不做任何事情,处理信息,直到下一条信息才做。这就是你想要的问题的第一句话。为什么听力问题?

+0

我想这没有问题。我只是问,因为我只是在学习,我不知道一个正在倾听的流程是否会消耗大量的资源。非常感谢您的回复 – vicmarq

+0

基本上没有,它不应该消耗太多的资源。如果你想立即使用消息,你确实需要一个正在运行的进程,尽管 – robthewolf

+0

有些人告诉我不要在这些长时间运行的进程中使用PHP。你怎么看待这件事? – vicmarq