我希望我的pub / sub只存储频道上的最后一条可用消息,并转储因消费者太慢(或暂停)而不会消耗的所有先前消息。 ZMQ有CONFLATE选项,但是RabbitMQ在Python(pika)上有类似的选项吗?
发布者以50Hz更新,而一些订阅者无法快速处理(10到50Hz之间)。我不希望他们处理队列中最旧的消息(这意味着处理已经过时的数据);它必须在准备好消费时才处理最后一条可用消息。
答案 0 :(得分:0)
RabbitMQ实际上通过Maximum Queue Length feature支持开箱即用的场景。
来自文档:
队列的最大长度可以限制为设定数量的消息......在所有情况下,都使用就绪消息的数量;未确认的消息不计入限制。
当设置了最大队列长度或大小并达到最大值时,RabbitMQ的默认行为是从队列前面丢弃或写入死信(即队列中最旧的消息)。