【发布时间】:2018-08-21 11:36:08
【问题描述】:
我正在尝试在 Rabbitmq 中设置特定队列的溢出行为以拒绝超过最大限制的消息。我正在使用 Web 控制台添加一个新队列并设置 x-max-length。然后我手动添加了 x-overflow 并赋予它拒绝发布的值。但似乎默认溢出行为是正在应用的行为,其中旧消息被删除,新消息被排队。
我定义溢出行为的方式是否错误?有人可以指出我应该如何通过网络控制台设置溢出行为吗?
【问题讨论】:
标签: rabbitmq
我正在尝试在 Rabbitmq 中设置特定队列的溢出行为以拒绝超过最大限制的消息。我正在使用 Web 控制台添加一个新队列并设置 x-max-length。然后我手动添加了 x-overflow 并赋予它拒绝发布的值。但似乎默认溢出行为是正在应用的行为,其中旧消息被删除,新消息被排队。
我定义溢出行为的方式是否错误?有人可以指出我应该如何通过网络控制台设置溢出行为吗?
【问题讨论】:
标签: rabbitmq
它不能通过 web gui 工作,只能通过 cli。 示例:
rabbitmqctl set_policy limit-1gb ".*" '{"max-length-bytes":1000000000,"overflow":"reject-publish"}' --apply-to queues
rabbitmqctl set_policy limit-1m ".*" '{"max-length":1000000,"overflow":"reject-publish"}' --apply-to queues
【讨论】:
x-overflow 选项仅适用于经典队列,不适用于仲裁队列。因此,如果您使用的是仲裁队列,这就是解释。
目前(在 Rabbit 3.8.5 中)仲裁队列仅支持 drop-head 溢出,不支持 reject-publish 或 reject-publish-dlx。
【讨论】: