配置RabbitMQ以使用新消息替换旧的待处理消息

Jan*_*bel 3 amqp rabbitmq

是否可以配置RabbitMQ交换或队列,使得任何时候最多一条具有给定路由密钥的消息都处于待处理状态?如果新消息到达,则旧消息将被丢弃,新消息将被排队.

如果没有这样的选项,那么在应用程序级别实现此选项的最佳方法是什么?即当应用程序收到消息时,它如何检查是否还有待处理的消息?

rob*_*olf 5

您需要安装Last Value Cache并启用它.您的交换将是"x-lvc"类型,它继承自直接交换类型.

每次连接到MQ时,都要创建一个队列并绑定到此交换.它会将最新消息传递给队列.它非常适合确保您只获得最新的消息.除非连接了队列,否则将丢弃发送到此交换的所有其他消息.因此,一旦连接,您将继续接收更新.

这是安装说明:https: //github.com/simonmacmullen/rabbitmq-lvc-plugin

这是一个类似的问题: RabbitMQ消息 - 初始化消费者