如何在activemq中桥接主题和队列

时间:2017-06-10 04:57:00

标签: jms activemq

我是整体消息传递的新手,但已经进入了一个大量使用消息传递的支持项目 所以该项目使用了Tibco,在Tibco中 - 使用图形用户界面将主题添加到队列中非常容易。
现在我们想要转移到活动的mq - 并且刚刚开始阅读它 - 我找不到一个简单的方法来将主题桥接到队列

任何想法?
    感谢

3 个答案:

答案 0 :(得分:3)

取决于桥接的意思。 ActiveMQ有一些功能可以帮助你。

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

Virtual Topics Destinations:虚拟主题背后的想法是生产者以通常的JMS方式发送主题。消费者可以继续使用JMS规范中的主题语义。但是,如果主题是虚拟的,则消费者可以从物理队列中消费逻辑主题订阅,从而允许许多消费者在许多机器上运行。线程负载平衡负载。

Broker Camel Component:在ActiveMQ代理中嵌入Apache Camel为使用Camel的集成功能扩展消息代理提供了极大的灵活性。 Apache Camel路由也有好处,因为您可以避免远程连接到ActiveMQ的序列化和网络成本 - 如果您使用activemq组件。

答案 1 :(得分:2)

除了Tim Bish的优秀答案之外,您还可以在activemq xml配置中使用复合目标来明确地将消息从主题转发到队列。但是,最简单的方法是使用虚拟主题,不使用配置 - 只需命名约定。

    <destinationInterceptors>
      <virtualDestinationInterceptor>
        <virtualDestinations>
          <compositeTopic name="THE.TOPIC">
            <forwardTo>
              <queue physicalName="THE.QUEUE" />
            </forwardTo>
          </compositeTopic>
        </virtualDestinations>
      </virtualDestinationInterceptor>
    </destinationInterceptors>

答案 2 :(得分:0)

要启用镜像队列(请参阅http://activemq.apache.org/mirrored-queues.html),请添加以下内容 在XML配置元素中:

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

这将为您的Broker上的每个队列创建一个名为“* .rec”的主题。

因此,每个发送到队列“Q1”的消息也会被发送到主题“Q1.rec”