如何丢弃Rabbitmq的某些消息

时间:2019-09-18 12:26:38

标签: rabbitmq

生产者每5秒钟发送一次带有路由密钥(x)的消息到交换机。根据路由密钥,它被发送到2个队列A和B。从A消费的消费者每5秒钟想要一次,但是从B消费的消费者每1分钟只需要一次消息。

一种方法是使用队列B中的消息,并丢弃我们不需要的消息(仅每1分钟考虑一次)。

在Rabbitmq中还有其他更好的方法吗?

2 个答案:

答案 0 :(得分:0)

消费者可以保留有关上一次消费消息的状态。当收到新消息时,可以检查自从消耗最后一条消息以来是否经过了所需的时间。如果不是,他可以忽略该消息。

这是必须由使用者而非RabbitMQ经纪人处理的逻辑。

答案 1 :(得分:0)

RMQ deduplication plugin的重复数据删除交换旨在满足此目的。

您可以指定不想多次看到类似消息的时间,并且交易所将删除给定消息的任何其他副本。邮件通过x-deduplication-header进行标识。

可以通过x-cache-ttl交换参数或消息头来控制保证消息唯一的时间。