首页 > 解决方案 > 如何识别送达通知中的消息?

问题描述

在 pika 中,我打电话channel.confirm_delivery(on_confirm_delivery)是为了在消息成功传递(或传递失败)时得到通知。然后,我打电话channel.basic_publish发布消息。一切都是异步执行的。

如何在on_confirm_delivery调用回调时找到相关消息?在参数中,作为参数传递给回调的对象中唯一发生变化的信息是delivery_tag,这似乎是一个自动递增的数字。但是,basic_publish不返回任何交货标签。

换句话说,如果我调用basic_publish了两次,我怎么知道当我收到一个确认时,是第一个消息还是第二个消息被确认了?

标签: pythonrabbitmqpika

解决方案


从 RabbitMQ 文档中,我发现:

交付标签是单调增长的正整数,并由客户端库呈现。

因此,您可以在每个频道的代码中保持一个不断增长的整数,当频道打开时将其设置为 0,当您发布消息时将其增加。那么这个整数将与 相同delivery_tag


推荐阅读