标签: pika
我希望我的队列能够删除在一定时间内未处理的邮件。
我已经通过记录发布时间在消费者中这样做了。但是,在没有人订阅的情况下,队列最好简单地删除陈旧的消息。
我可以在Pika中的消息中设置到期时间(TTL)。 RabbitMQ文档谈论它,但我没有在Pika文档中看到TTL引用。
答案 0 :(得分:5)
您可以使用BasicProperties对象上的过期标志设置每条消息TTL,如pika文档here中所示。
使用它看起来像这样。
channel.basic_publish( exchange='', routing_key='hello_world', properties=pika.BasicProperties( expiration='60000', ), body='my message' )
请注意,expiration政策使用毫秒作为字符串表示,因此60000会转换为60秒。
expiration
60000
您可以详细了解基于消息的TTL及其警告here。