生产者每5秒钟发送一次带有路由密钥(x)的消息到交换机。根据路由密钥,它被发送到2个队列A和B。从A消费的消费者每5秒钟想要一次,但是从B消费的消费者每1分钟只需要一次消息。
一种方法是使用队列B中的消息,并丢弃我们不需要的消息(仅每1分钟考虑一次)。
在Rabbitmq中还有其他更好的方法吗?
答案 0 :(得分:0)
消费者可以保留有关上一次消费消息的状态。当收到新消息时,可以检查自从消耗最后一条消息以来是否经过了所需的时间。如果不是,他可以忽略该消息。
这是必须由使用者而非RabbitMQ经纪人处理的逻辑。
答案 1 :(得分:0)
RMQ deduplication plugin的重复数据删除交换旨在满足此目的。
您可以指定不想多次看到类似消息的时间,并且交易所将删除给定消息的任何其他副本。邮件通过x-deduplication-header
进行标识。
可以通过x-cache-ttl
交换参数或消息头来控制保证消息唯一的时间。