我有一个正在运行的实时RabbitMQ队列。我想使用最新的条目,而忽略所有其他条目。
更好的是,可以进行单例队列大小的扇出交换吗?
答案 0 :(得分:1)
是的,这可以通过在声明队列时指定最大队列长度限制来完成。
如documentation所述,
队列的最大长度可以限制为一定数量的消息或一定数量的字节(所有消息主体长度的总和,忽略消息属性和任何开销),或者两者都限制。
RabbitMQ的默认行为是设置了最大队列长度或大小并且达到了最大值时是从队列的前面丢弃或死信消息(即队列中最旧的消息)。要修改此行为,请使用下面介绍的溢出设置。
如果您使用的是Java,则可以执行以下操作:
Map<String, Object> args = new HashMap<String, Object>();
args.put("x-max-length", 1);
channel.queueDeclare("myqueue", false, false, false, args);