镜像队列

功能 > 目标功能 > 镜像队列

镜像队列

队列提供了一种极好的可靠且高性能的 负载均衡机制。每个放在队列中的消息只能被一个消费者成功处理。这是一件好事!(smile)。但是有时您希望监控队列之间生产者和消费者之间的消息流。

为此,您可以使用 虚拟目标 来设置一个虚拟队列,该队列将消息转发到多个物理队列。但是,为系统中的每个队列启用此功能可能会很麻烦。

因此,为了简化队列监控,我们添加了一个名为“镜像队列”的功能。镜像队列就像您消息代理中所有队列的零配置 线路截取

示例

例如,假设我们有许多生产者向队列 Foo.Bar 发送消息,而消费者从队列 Foo.Bar 消费消息,我们希望监控或查看活动。

如果您启用镜像队列,则默认情况下,您可以订阅主题 VirtualTopic.Mirror.Foo.Bar 并接收发送到队列 Foo.Bar 的所有消息。由于这是一个主题,因此可以根据需要订阅此主题的多个消费者。

如果您愿意,您可以将此功能与 虚拟主题 结合使用;这样您就可以定义一个逻辑消费者;比如叫 A。然后,您可以订阅队列 Consumer.A.VirtualTopic.Mirror.Foo.Bar 以接收发送到队列 Foo.Bar 的所有消息(针对消费者 A)。然后,您可以运行此消费者的多个实例,这些实例可以在彼此之间进行负载均衡。

镜像队列与 虚拟目标 的这种组合对于监控事务流非常有用;例如,使用 业务活动监控 (BAM)

镜像队列的工作原理

启用后,镜像队列会将发送到队列的每条消息也发送到一个类似名称的主题;这样,那些有兴趣观察队列上的消息交换的人可以从镜像队列主题中消费。

当与上述示例中描述的此主题上的 虚拟主题 结合使用时,您实际上可以在运行时动态创建新队列,这些队列是给定队列的镜像!

启用镜像队列

默认情况下,镜像队列处于禁用状态;因为启用它会为您使用的每个队列创建一个虚拟主题。

要启用镜像队列,请在 BrokerService 上设置 useMirroredQueues 属性,或在以下内容中添加以下内容: 元素,位于 [Xml 配置](xml-configuration) 中。

<destinationInterceptors>
    <mirroredQueue copyMessage = "true" postfix=".qmirror" prefix=""/>
</destinationInterceptors>

这将为代理上的每个队列创建一个名为“*.qmirror”的主题。

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