从 RabbitMQ 队列中检索消息
Posted
技术标签:
【中文标题】从 RabbitMQ 队列中检索消息【英文标题】:Retrieve messages from RabbitMQ queue(s) 【发布时间】:2011-01-13 23:29:06 【问题描述】:我希望在我的 php 应用程序中实现 RabbitMQ,并且正在使用 php-amqp 扩展。我唯一的问题是,如何轻松查询以返回 PHP 中的队列内容?
php-amqp 似乎无法让我这样做。如果我错了,请在这里帮助我:)
【问题讨论】:
【参考方案1】:James,你能在 rabbitmq-discuss 上问这个问题吗?您的问题涉及“查询”队列以获取消息的含义。在 RabbitMQ 中,您使用来自队列的消息,并使用队列绑定执行过滤。看看这个介绍 - http://blogs.digitar.com/jjww/2009/01/rabbits-and-warrens/
干杯
亚历克西斯 RabbitMQ
【讨论】:
【参考方案2】:如果您需要知道队列中有多少消息,您可以在声明队列时获取此信息,或者如果您使用basic.get
检索单个消息。通常,消息的收件人会使用basic.consume
,并且他们不知道有多少消息在等待。
【讨论】:
【参考方案3】:这类问题更多是关于queue data type 和一般的AMQP 概念。
在 AMQP(以及在 RabbitMQ,它是 AMQP 兼容的代理)中,队列是典型的 FIFO 队列。队列不是通常用于任意项目访问的那种数据类型,并且 RabbitMQ 目前没有提供任何绕过 FIFO 概念并允许这种访问的方法。至少开箱即用。可能有任何第三方插件,但我不知道有任何此类插件。再一次,它将破坏整个 FIFO 概念,它只是成为一些新的 redis 或其他什么,甚至不谈论性能影响(人们可以检查常见数据结构操作的复杂性,甚至这个关于 SO -What are the time complexities of various data structures? 的问答给出了简要的原因添加任意访问权限不是 AMQP 或任何关心性能的 AMQP 兼容代理的目标)。
大多数关于任意队列访问的问题出现在队列被置于错误的上下文中时:可能是队列概念不适合当前或期望的架构以及某些键值存储或数据库更好的情况。
【讨论】:
以上是关于从 RabbitMQ 队列中检索消息的主要内容,如果未能解决你的问题,请参考以下文章
基于SSM框架的商品实时秒杀系统的设计与实现.rar(论文设计+项目源码) 采用SSM+redis缓存+rabbitMS消息队列