追溯消费者

特性 > 消费者特性 > 追溯消费者

背景

追溯消费者只是一个普通的 JMS 主题消费者,它指示在订阅开始时,应尽一切努力追溯时间并发送任何旧消息(或该主题上发送的最后一条消息),这些消息消费者可能已错过。

有关更多详细信息,请参阅 订阅恢复策略

示例

您可以如下标记消费者为追溯消费者

topic = new ActiveMQTopic("TEST.Topic?consumer.retroactive=true");
consumer = session.createConsumer(topic);

限制

追溯消费者在跨代理网络使用时不会始终如一地工作。

在主题情况下,当我们将代理 A 连接到代理 B 时,代理 B 将向代理 A 发送它已收到的所有订阅。由于代理 A 将消息复制到每个订阅,并且我们希望避免在代理 B 处接收重复消息,因此我们不能向代理 A 发送多个相同主题的订阅。因此,我们的网络桥接器会跟踪发送的订阅,并且只向主题发送第一个订阅。后续订阅会增加订阅的引用计数,但实际上不会发送订阅。

这本质上是问题所在。如果主题的第一个订阅不是追溯的,则会将其从 B 发送到 A,并且 B 代理将不会收到追溯消息。然后,后续订阅可能是(追溯的),但它不会导致追溯消息从代理 A 发送到代理 B,因为后续订阅不会发送到代理 A。

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛徽标和 Apache ActiveMQ 项目徽标是 Apache 软件基金会的商标。版权所有 © 2024,Apache 软件基金会。根据 Apache 许可证 2.0 授权。