我想获得Rabbitmq队列中存在的消息的副本而不消耗它们。可能吗 ?提前致谢,
我想获得Rabbitmq队列中存在的消息的副本而不消耗它们。可能吗?
不是。您最接近的选择是消费或获取消息,然后通过否定确认拒绝。
注意:RabbitMQ团队监控rabbitmq-users
mailing list,有时只回答StackOverflow上的问题。
也许你可以注册一个消费者(如官方文档中所示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)
我希望这可以帮助您走向一个完整可靠的解决方案!