是否可以配置RabbitMQ交换或队列,使得任何时候最多一条带有给定路由密钥的消息都处于待处理状态?如果新消息到达,则旧消息将被丢弃,新消息将被排队。
如果此选项不可用,那么在应用程序级别实现此选项的最佳方法是什么?即当应用程序收到消息时,它如何检查是否还有待处理的消息?
答案 0 :(得分:5)
您需要安装Last Value Cache并启用它。您的交易所将是“x-lvc”类型,它继承自直接交换类型。
每次连接到MQ时,创建一个队列并绑定到此交换。它会将最新消息传递给队列。它非常适合确保您只获得最新的消息。除非连接了队列,否则将丢弃发送到此交换的所有其他消息。因此,一旦连接,您将继续接收更新。
这是安装说明: https://github.com/simonmacmullen/rabbitmq-lvc-plugin
这是一个类似的问题: RabbitMQ messaging - initializing consumer