我使用这个简单的代码pika
:
conn = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = conn.channel()
def on_message(ch, method, properties, message):
print("Received message: %r" % message)
channel.basic_ack(delivery_tag=method.delivery_tag)
channel.queue_declare(queue='my_queue', durable=True)
channel.basic_qos(prefetch_count=1)
channel.basic_consume(on_message, queue='my_queue')
channel.start_consuming()
问题:
一旦我收到一条消息,并且我的on_message
回调正在运行,rabbitmq 如何确保在我调用之前不向其他工作人员发送相同的消息basic_ack
?basic_ack
因为在我的测试中,如果我多次运行代码,如果我不调用该消息将再次发送。从发送消息的那一刻起,rabbitmq 是否有一些超时,直到它得到一个ack
?