Я использую этот простой код, используя 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
?