2012-09-18 60 views
1

我们试图在activemq中使用消息。生产者(我们没有控制权)将不同的消息放在队列和主题中。作为一个消费者,我怎样才能配置我的客户端同时使用队列和主题?我能想到的唯一方法是创建两个不同的消费者,一个连接到队列,另一个连接到主题。 这种方法是否正确,或者我能做些什么来创建一个同时收听两者的消费者?ActiveMQ - 同时从队列和主题中消费

感谢 ķ

+0

是的,这是相当多的路要走,两个端点的听众。 –

回答

2

ActiveMQ的标准分发捆绑了Apache的骆驼。

鉴于您正在运行标准的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”消费,你可以在一个地方得到所有消息。

+0

感谢您的回复。不幸的是,我们正在使用的activemq实例(作为消费者)安装在我们无法控制的机器上。我们所能控制的是代理连接URL。我们无法更改任何activemq配置。有没有办法解决它? –

+0

Na。那么你做不了多少。你需要设置两个监听器。但是,您当然可以使用上面的Camel配置来运行本地ActiveMQ实例,以将两个不同的目标合并到本地队列中。只需将ActiveMQ中的Conncetion工厂配置到远程ActiveMQ实例即可。 ' ' 这可能比仅仅放置两个监听器更复杂也更复杂。 –

1

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

相关问题