Pika 是否实现了 TTL?

Is TTL implemented in Pika?

我希望我的队列丢弃在特定时间内未处理的消息。

我已经通过记录发布时间在消费者中做到了这一点。但是,在没有人订阅的情况下,队列最好直接丢弃过时的消息。

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

您可以使用 BasicProperties 对象上的到期标志设置每条消息的 TTL,如 pika 文档中所示 here

使用它看起来像这样。

channel.basic_publish(
    exchange='',
    routing_key='hello_world',
    properties=pika.BasicProperties(
        expiration='60000',
    ),
    body='my message'
)

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

您可以阅读有关基于消息的 TTL 及其注意事项的更多信息here