【问题标题】:ActiveMQ - Consuming from Queue and Topic at the same timeActiveMQ - 同时从队列和主题消费
【发布时间】:2023-03-16 14:09:01
【问题描述】:

我们正在尝试在 activemq 中消费消息。生产者(我们无法控制)将不同的消息放入队列和主题中。作为消费者,我如何将我的客户端配置为同时从队列和主题中消费?我能想到的唯一方法是创建两个不同的消费者,一个连接到队列,另一个连接到主题。 这种方法是否正确,或者我可以做些什么来创建一个同时收听两者的消费者?

谢谢 克

【问题讨论】:

  • 是的,这几乎是要走的路,两个端点的两个侦听器。

标签: activemq


【解决方案1】:

ActiveMQ 标准发行版与 Apache Camel 捆绑在一起。

鉴于您正在运行标准 ActiveMQ - 您可以向 Camel 添加一条小路由来为您执行此操作。

编辑 /conf 文件夹中的“camel.xml”。

添加两条路线:

<route>
  <from uri="activemq:topic:someTopic"/>
  <to uri="activemq:queue:comboQueue"/>
</route>

<route>
  <from uri="activemq:queue:someQueue"/>
  <to uri="activemq:queue:comboQueue"/>
</route>

确保此 camel.xml 包含在 ActiveMQ 配置中,例如 Activemq.xml。

现在,只需从“comboQueue”消费,您就可以在一个地方获得所有消息。

【讨论】:

  • 感谢您的回复。不幸的是,我们(作为消费者)使用的 activemq 实例安装在我们无法控制的机器上。我们所能控制的只是代理连接 URL。我们将无法更改任何 activemq 配置。有什么办法解决吗?
  • 不。那你就无能为力了。您需要设置两个侦听器。但是,您当然可以使用上述 Camel 配置运行本地 ActiveMQ 实例,以将两个不同的目的地合并到本地队列。只需在 ActiveMQ 中配置一个连接工厂到远程 ActiveMQ 实例。 &lt;from uri="remoteAMQ:queue:someQueue"/&gt; &lt;to uri="activemq:queue:comboQueue"/&gt; 这可能比简单地设置两个听众更棘手和更复杂..
【解决方案2】:

您可以使用 ActiveMQ 的composite destination 功能实现此目的,该功能允许您监听多个目的地和不同类型的目的地。

【讨论】:

    猜你喜欢
    • 2014-06-27
    • 2015-02-02
    • 2015-06-25
    • 2015-09-23
    • 2012-04-10
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    相关资源
    最近更新 更多