连接到 RabbitMQ 生产者时如何跳过旧消息

How to skip old messages when connecting to a RabbitMQ producer

我研究了消息和队列的过期和 TTL 策略,但我不确定这是否是完成我正在尝试做的事情的最佳方式。

理想情况下,当我的消费者连接到我的发件人时,我想跳过任何旧的、未收到的消息,并且只接收在 连接后发送的消息。在 Kafka 中,这是通过将消费者配置为在开始消费更多消息之前基本上搜索队列的末尾来实现的。与此功能等效的直接 RabbitMQ 似乎不存在,但我不得不想象有一种更有效的方法来完成此操作,而不会使消息的 TTL 或过期时间非常短。

如何只使用连接到 RabbitMQ 生产者后收到的消息?

最终对我们有用的是在发布期间配置生产者而不是配置消费者。

channel.basic_publish([other params], properties=pika.BasicProperties(expiration='1000'))

这会导致消息在一秒后过期,这足以满足我们的需求。