是否有 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).
我希望我的 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).