【问题标题】:How to discard certain messages from rabbitmq如何丢弃来自rabbitmq的某些消息
【发布时间】:2019-09-18 12:26:38
【问题描述】:

生产者每 5 秒向交换器发送一次带有路由密钥 (x) 的消息。根据路由键,发送到 2 个队列 A 和 B。从 A 消费的消费者每 5 秒需要一次,而从 B 消费的消费者在一分钟内只需要一次。

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

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

【问题讨论】:

    标签: rabbitmq


    【解决方案1】:

    消费者可以保持上次消费消息的状态。当有新消息到达时,可以检查自上次消息被消费以来是否已经过了所需的时间。如果不是,他可以忽略该消息。

    这是必须由消费者处理的逻辑,而不是 RabbitMQ 代理。

    【讨论】:

      【解决方案2】:

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

      您可以指定不希望多次看到类似消息的时间,并且交易所将丢弃给定消息的任何进一步副本。消息通过x-deduplication-header 识别。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-28
        • 2022-12-15
        相关资源
        最近更新 更多