RabbitMQ - 有没有办法限制队列中的消息数量?

RabbitMQ - Is there a way to limit the number of messages in a queue?

有没有办法限制 RabbitMQ 中队列可以容纳的最大消息数?

例如,如果这个数字设置为10,当前大小为10,当有新消息被推入队列(FIFO)时,最旧的消息将被丢弃。

是的,有 x-max-length 属性:

Map<String, Object> args = new HashMap<String, Object>();
args.put("x-max-length", 10);
channel.queueDeclare("myqueue", false, false, false, args);

您也可以通过使用 rabbitmqctl 为其配置策略来实现此目的:

rabbitmqctl set_policy Ten ".*" '{"max-length":10}' --apply-to queues

当新消息进来时,最旧的消息将被丢弃。

可在此处找到详细信息:https://www.rabbitmq.com/maxlength.html