从RabbitMQ获取消息而不消费

问题描述 投票:0回答:2

我想获得Rabbitmq队列中存在的消息的副本而不消耗它们。可能吗 ?提前致谢,

python-3.x rabbitmq
2个回答
1
投票

我想获得Rabbitmq队列中存在的消息的副本而不消耗它们。可能吗?

不是。您最接近的选择是消费或获取消息,然后通过否定确认拒绝。


注意:RabbitMQ团队监控rabbitmq-users mailing list,有时只回答StackOverflow上的问题。


0
投票

也许你可以注册一个消费者(如官方文档中所示here),而不给经纪人ack:no_ack=True

channel.basic_consume(callback, queue='hello', no_ack=True)

这样,您的消费者就会收到消息内容,但消息本身并未标记为代理提供(并在消费者退出时返回Ready状态)。

可能这不是做你需要的最干净的方法,但它很有效,而且很简单。

您可以采用的另一种(但相似的)方法是基于所谓的pull API(与注册订阅者时使用的推送API相反);我在.Net应用程序中使用了这种方法:你可以找到.Net文档here,我认为Python API也是类似的。

关键的想法是在不给ack的情况下获得消息:channel.BasicGet(queueName, noAck)

我希望这可以帮助您走向一个完整可靠的解决方案!

© www.soinside.com 2019 - 2024. All rights reserved.