【发布时间】:2012-02-27 10:21:08
【问题描述】:
RabbitMQ 是否在有消息时为消费者调用回调函数,还是消费者必须轮询 RabbitMQ 客户端?
所以在消费者端,如果有 PHP 脚本,RabbitMQ 可以调用它并将消息/参数传递给它。例如如果在 shard 1 上提交了 rating 并且 aggregateRating 表在 shard 2 上,那么 shard 2 上的 RabbitMQ 消费者会触发脚本 aggRating.php 并传递插入到 shard 1 中的参数吗?
【问题讨论】:
-
库的实现方式不同。他们中的大多数都支持 basic.consume。如果您的 php 库没有,则需要编写自己的库。例如,您可以通过使用来自代理的消息的 python 脚本或 java 程序来驱动您的 php 脚本。
-
Python/Java 客户端根本不需要轮询,但它们需要与代理的稳定连接。代理将消息推送到 P/J 客户端。然后,客户端可以为每条消息调用您的脚本。详见 RabbitMQ 教程:rabbitmq.com/getstarted.html
-
我对 PHP 没有任何经验,对 PHP AMQP 客户端一无所知。我所说的关于 PHP 库的任何内容都只是一个有根据的猜测。我还没有在这里真正回答你的问题。顺便说一句,将来,您可能希望将此类问题发布到 RabbitMQ 讨论邮件列表。我认为我是唯一一个检查 SO 的 RabbitMQ 开发人员;但我们会认真回答邮件列表上发布的任何问题。
标签: php messaging rabbitmq sharding