我想在我的PHP应用程序中使用RabbitMQ,并使用php-amqp扩展。我的唯一问题是,如何轻松地查询以在PHP中返回队列的内容?
看起来php-amqp似乎不能让我做到这一点。如果我错了,请帮助我 :)
我想在我的PHP应用程序中使用RabbitMQ,并使用php-amqp扩展。我的唯一问题是,如何轻松地查询以在PHP中返回队列的内容?
看起来php-amqp似乎不能让我做到这一点。如果我错了,请帮助我 :)
James,请你在rabbitmq-discuss上提出这个问题好吗?你的问题涉及到从队列中“查询”消息的含义。在RabbitMQ中,您可以从队列中消费消息,并使用队列绑定进行过滤。请查看此介绍-http://blogs.digitar.com/jjww/2009/01/rabbits-and-warrens/
祝好
alexis RabbitMQ
如果您需要知道队列中有多少条消息,您可以在声明队列时获取此信息,或者如果您使用 basic.get
来检索单个消息。通常,消息的接收者将使用 basic.consume
,他们将不会知道有多少消息正在等待。
这种问题更多地涉及队列数据类型和一般的AMQP概念。
在AMQP(以及与之兼容的RabbitMQ代理)中,队列通常是FIFO队列。队列不是用于访问任意项的数据类型,而且RabbitMQ目前没有提供任何绕过FIFO概念并允许此类访问的方式。至少原生情况下是如此。可能会有第三方插件,但我不知道是否有此类插件。再次强调,这将破坏整个FIFO概念,变成一些新的redis或其他东西,更不用说性能影响了(人们可以检查常见数据结构操作的复杂度,即使是SO上的这个Q&A - What are the time complexities of various data structures?,也可以简单了解为什么添加任意访问不是AMQP或任何关心性能的AMQP兼容代理的目标)。
大多数关于任意队列访问的问题出现在将队列放入错误上下文时:当队列概念只是不适合当前或期望的架构时,它可能会出现这种情况,并且某些键值存储或数据库更加适合。