【发布时间】:2015-05-02 04:42:21
【问题描述】:
我有一个支持 amqp 和 openwire 的 activeMQ 代理。 openwire 的生产者(tcp,端口 61616)是否有可能将生产到具有使用 amqp 协议的消费者的队列?
或者我是否仅限于相同的协议消费者和生产者?
【问题讨论】:
-
面临类似问题。你解决了吗?
标签: jms rabbitmq activemq amqp
我有一个支持 amqp 和 openwire 的 activeMQ 代理。 openwire 的生产者(tcp,端口 61616)是否有可能将生产到具有使用 amqp 协议的消费者的队列?
或者我是否仅限于相同的协议消费者和生产者?
【问题讨论】:
标签: jms rabbitmq activemq amqp
是的,可以与 OpenWire JMS 客户端和使用 ActiveMQ 的 AMQP 客户端进行互操作。保存消息的目的地不是单独的空间,因此由一种类型的客户端在队列中放置的消息可由来自其他协议的客户端使用。
您唯一需要解决的是如何将实际消息传达给每个客户。 ActiveMQ 提供了一个可配置的转换器,它既可以在从 AMQP 客户端发送时保留 AMQP 消息的原始字节,也可以将该消息转换为更 JMS 样式的消息对象,OpenWire 客户端将作为预期类型(TextMessage、BytesMessage、地图消息...)。
请参阅 ActiveMQ 的文档以获取有关配置和了解 AMQP 到 OpenWire 消息的映射的帮助。
http://activemq.apache.org/amqp.html
如果您想以最简单的方式处理消息被转换并始终以正确的 JMS 类型到达 OpenWire 客户端的情况,请在配置中选择 JMS Transformer,如下所示:
<transportConnector name="amqp" uri="amqp://localhost:5672?transport.transformer=jms"/>
【讨论】: