使用Active MQ 5.15.4并遵循http://activemq.apache.org/virtual-destinations.html中的文档,当发送到VirtualTopic时,消息将发送到所有连接的队列,但是它们永远不会从发送它们的虚拟主题中出队。
我们需要手动清理虚拟主题吗?
将消息保留在主题中的原因是什么?是否可以稍后重新发送?但是,当新队列链接到虚拟主题时,不会将所有现有的入队消息发送给它。
尚未对此进行测试,但是连接队列中的消息是否尊重虚拟主题中发送的消息的持久性标志?
答案 0 :(得分:1)
如果虚拟主题自身上没有任何使用者,则保留的唯一消息就是虚拟主题使用者的订阅队列中放置的消息。例如,如果您发送到VirtualTopic.FOO,并且在该主题上没有订阅,或者没有命名订阅的虚拟主题使用者队列(例如Consumer.A.VirtualTopic.FOO),则该消息将被完全丢弃。如果某个时刻消费者队列中有某个消费者,则发送到主题的消息将被转发到队列,但主题本身不保留任何内容。
如果虚拟主题本身上有使用者,他们将获得发送给他们的消息,或将消息保留给他们,直至达到所配置的未决消息限制等。
使用者队列将遵守由发送它们的MessageProducer指定的持久值。