TTL是否在Pika中实现?

use*_*956 4 pika

我希望我的队列删除在一定时间内未处理的消息。

我已经通过记录发布时间在使用者中进行了此操作。但是,在没有人订阅的情况下,队列只丢弃陈旧的消息会更好。

我可以在Pika中的消息中设置到期时间(TTL)吗?RabbitMQ文档对此进行了讨论,但是我在Pika文档中看不到TTL引用。

ean*_*son 8

您可以使用过期标志BasicProperties对象上设置的每封邮件的TTL,为鼠兔文档中看到这里

使用它看起来像这样。

channel.basic_publish(
    exchange='',
    routing_key='hello_world',
    properties=pika.BasicProperties(
        expiration='60000',
    ),
    body='my message'
)
Run Code Online (Sandbox Code Playgroud)

请记住,该expiration策略使用毫秒作为字符串表示,因此60000将转换为60秒。

您可以在此处阅读有关基于消息的TTL的更多信息和注意事项。