AMQP 和 Openwire - Activemq 代理和 2 个不同的消费者

Urb*_*leg 4 activemq-classic jms amqp rabbitmq

我有一个同时支持 amqp 和 openwire 的 activeMQ 代理。openwire(tcp,端口 61616)的生产者是否有可能向具有使用 amqp 协议的消费者的队列生产?

或者我仅限于相同的协议消费者和生产者?

Tim*_*ish 5

是的,可以使用 ActiveMQ 与 OpenWire JMS 客户端和 AMQP 客户端进行互操作。保存消息的目的地不是单独的空间,因此一种类型的客户端放置在队列上的消息可由来自某种其他协议的客户端使用。

您唯一需要应对的是如何将实际消息传达给每个客户端。ActiveMQ 提供了一个可配置的转换器,可以在从 AMQP 客户端发送时保留 AMQP 消息的原始字节,也可以将该消息转换为更多 JMS 风格的消息对象,OpenWire 客户端将按照预期类型(TextMessage、BytesMessage、地图消息...)。

请参阅 ActiveMQ 文档以获取配置和了解 AMQP 到 OpenWire 消息映射的帮助。

http://activemq.apache.org/amqp.html

如果您想要最简单地处理消息被转换并始终以正确的 JMS 类型到达 OpenWire 客户端的情况,请在配置中选择 JMS 转换器,如下所示:

<transportConnector name="amqp" uri="amqp://localhost:5672?transport.transformer=jms"/>
Run Code Online (Sandbox Code Playgroud)