【问题标题】:pika acknowledge message after basic_get在 basic_get 之后 pika 确认消息
【发布时间】:2023-03-08 14:43:01
【问题描述】:

我有一个 python 代码,它一次使用一个来自 RMQ 的消息

message_count = queue_state.method.message_count
    if not queue_empty:
        message_cursor = 1
        while message_cursor <= message_count:
            method, properties, body = channel.basic_get(queue=QueueName, auto_ack=True)
            callback(channel, method, properties, body)
            message_cursor += 1

我在回调中对接收到的消息进行了很多解析,我得到一个要求,而不是自动确认消息,只在它们完成回调后才确认它们。我做了一些挖掘,发现有一个名为 basic.ack 的方法

但我不确定如何在代码中使用它。该示例正在使用

channel.basicAck(deliveryTag, false).

我在哪里可以获得 deliveryTag 的值?我应该在哪里运行basicAck?在我的回调之后还是在回调内部?

非常感谢

【问题讨论】:

    标签: python rabbitmq pika


    【解决方案1】:

    您的方法对象中提供了交付标签:method.delivery_tag

    pika 文档中确实没有(据我所知), 但是rabbitmq.com上的教程确实给了example

    def callback(ch, method, properties, body):
        print(" [x] Received %r" % body)
        time.sleep( body.count('.') )
        print(" [x] Done")
        ch.basic_ack(delivery_tag = method.delivery_tag)
    

    从引用的示例中检索到的示例代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-06
      • 2019-02-04
      • 2021-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-13
      相关资源
      最近更新 更多