【问题标题】:how to bridge a topic and queue in activemq如何在activemq中桥接主题和队列
【发布时间】:2017-06-13 15:49:54
【问题描述】:

我是消息传递的新手,但我加入了一个大量使用消息传递的支持项目。
因此,该项目使用 Tibco 并且在 Tibco 中 - 使用图形 UI 将主题连接到队列非常容易。
现在我们想要移动到活动 mq - 并且刚刚开始阅读它 - 找不到将主题连接到队列的简单方法

有什么想法吗?
谢谢

【问题讨论】:

    标签: jms activemq


    【解决方案1】:

    取决于您所说的桥接的含义。 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 的序列化和网络成本。

    【讨论】:

      【解决方案2】:

      除了 Tim Bish 的出色回答之外 - 您还可以在 activemq xml 配置中使用复合目标来将消息从主题显式转发到队列。然而,最简单的方法是使用虚拟主题,无需配置 - 只需命名约定。

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

      【讨论】:

        【解决方案3】:

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

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

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

        因此,放入队列“Q1”的每条消息也将发送到主题“Q1.rec”

        【讨论】:

          猜你喜欢
          • 2014-11-21
          • 2023-03-16
          • 2020-10-08
          • 2013-09-28
          • 2017-06-09
          • 2021-12-28
          • 2016-06-01
          • 2021-05-10
          • 1970-01-01
          相关资源
          最近更新 更多