【问题标题】:How to do a nack in Python如何在 Python 中做一个 nack
【发布时间】:2019-03-23 13:56:59
【问题描述】:

我尝试使用这些功能: - basic_nack - 基本拒绝 但我做不到

我想要一个在 python 中使用 pika 和以下功能之一的 nack 示例: - basic_nack - basic_reject

 def callback(ch, method, properties, body):
     ch.basic_reject(delivery_tag=method.delivery_tag) 

return pika.exceptions.ChannelClosed: (406, 'PRECONDITION_FAILED - unknown delivery tag 1')

【问题讨论】:

  • 最好分享一个完整的、可工作的代码示例来演示该问题。

标签: python-3.x rabbitmq


【解决方案1】:

pika 文档中,消息拒绝可以这样完成:

import pika

connection = pika.BlockingConnection()
channel = connection.channel()

for method_frame, properties, body in channel.consume('test'):
    channel.basic_reject(method_frame.delivery_tag)

请注意,您需要从method_frame 对象传递delivery_tag 值,该值指定被拒绝的消息。

basic_reject() 方法还接受附加参数requeue,默认为True

【讨论】:

  • 我正在使用回调:def callback(ch, method, properties, body): ch.basic_reject(delivery_tag=method.delivery_tag) return pika.exceptions.ChannelClosed: (406, 'PRECONDITION_FAILED - unknown交货标签 1')
  • stackoverflow.com/questions/9392478/… 的可能重复项确保 no_ack 参数在 basic_consume() 中设置为 False
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-27
  • 2012-05-30
  • 1970-01-01
  • 2012-09-29
  • 2021-10-18
相关资源
最近更新 更多