也许你可以注册一个消费者(如图所示) 这里 在官方文件中) 没有给经纪人的ack : no_ack=True
no_ack=True
channel.basic_consume(callback, queue='hello', no_ack=True)
这样,您的消费者就会收到消息内容,但消息本身并未标记为 交付 由经纪人(并返回到 Ready 消费者退出时的状态)。
Ready
可能这不是做你需要的最干净的方法,但它很有效,而且很简单。
您可以采用的另一种(但相似的)方法是基于所谓的 拉API (与...相反) 推送API 你在注册时使用 订户 );我在.Net应用程序中使用了这种方法:你可以找到.Net文档 这里 我认为Python API也是类似的。
关键的想法是在不给出确认的情况下获取消息: channel.BasicGet(queueName, noAck)
channel.BasicGet(queueName, noAck)
我希望这可以帮助您走向一个完整可靠的解决方案!
我想获得Rabbitmq队列中存在的消息的副本 没有消耗它们。可能吗?
不是。您最接近的选择是消费或获取消息,然后通过否定确认拒绝。
<子> 注意: RabbitMQ团队监控 rabbitmq-users 邮件列表 并且有时只回答StackOverflow上的问题。 子>
rabbitmq-users