是否有 RabbitMQ/pika 等同于 ZMQ 的 CONFLATE 选项?

Is there a RabbitMQ/pika equivalent to ZMQ's CONFLATE option?

我希望我的 pub/sub 仅存储通道上的最后一条可用消息,并转储所有先前因消费者太慢(或暂停)而不会被消费的消息。 ZMQ 有 CONFLATE 选项,但是 RabbitMQ 在 Python (pika) 上有类似的选项吗?

发布者以 50Hz 的频率更新,而一些订阅者的处理速度不能那么快(在 10 到 50Hz 之间)。我不希望他们处理队列中最旧的消息(这意味着处理已经过时的数据);它必须在准备好使用时仅处理最后一条可用消息。

RabbitMQ 实际上确实支持开箱即用的场景,通过 Maximum Queue Length feature

来自文档:

The maximum length of a queue can be limited to a set number of messages... In all cases the number of ready messages is used; unacknowledged messages do not count towards the limit.

The default behaviour for RabbitMQ when a maximum queue length or size is set and the maximum is reached is to drop or dead-letter messages from the front of the queue (i.e. the oldest messages in the queue).