RabbitMQ 消费确认过期时间设置指南:确保消息可靠处理
在 RabbitMQ 中,可以使用 basic.qos 方法设置消费者的 QoS(Quality of Service)参数,其中包括 prefetch_count 和 prefetch_size。
prefetch_count 参数用于设置消费者一次性从队列中预取的消息数量,而 prefetch_size 参数用于设置消费者一次性从队列中预取的消息总大小。
要设置消费确认过期时间,可以通过设置 prefetch_count 参数为 1,并且在消费者处理完一条消息后手动发送消费确认。如果在一定时间内没有发送消费确认,RabbitMQ 将重新将该消息发送给其他消费者。
以下是使用 Python pika 库设置消费确认过期时间的示例代码:
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
# 设置消费者的 QoS 参数
channel.basic_qos(prefetch_count=1)
def callback(ch, method, properties, body):
# 处理消息
print('Received: ' + body.decode())
# 发送消费确认
ch.basic_ack(delivery_tag=method.delivery_tag)
# 注册消费者,并指定回调函数
channel.basic_consume(queue='my_queue', on_message_callback=callback)
# 开始消费
channel.start_consuming()
在上述代码中,basic_qos(prefetch_count=1) 设置了消费者的 QoS 参数,确保每次只预取一条消息。而在 callback 回调函数中,使用 ch.basic_ack(delivery_tag=method.delivery_tag) 手动发送消费确认。
这样,当消费者处理完一条消息后,必须发送消费确认,否则 RabbitMQ 将重新将该消息发送给其他消费者。
原文地址: https://www.cveoy.top/t/topic/qfXZ 著作权归作者所有。请勿转载和采集!