我有一个支持amqp和openwire的activeMQ代理。 openwire(tcp,端口61616)的生产者是否可能生成具有使用amqp协议的消费者的队列?
或仅限于相同的协议消费者和生产者?
答案 0 :(得分:3)
是的,可以使用ActiveMQ与OpenWire JMS客户端和AMQP客户端进行互操作。保存消息的目标不是单独的空间,因此一个类型的客户端在队列上的消息位置可由客户端从其他协议中使用。
您唯一需要面对的是如何将实际消息传达给每个客户。 ActiveMQ提供了一个可配置的transfomer,它可以在从AMQP客户端发送时保留AMQP消息的原始字节,或者将该消息转换为更多JMS样式的消息对象,该消息对象将由OpenWire客户端作为预期类型接收(TextMessage,BytesMessage, ... MapMessage消息)。
有关配置和理解AMQP到OpenWire消息的映射的帮助,请参阅ActiveMQ的文档。
http://activemq.apache.org/amqp.html
如果您想最简单地处理消息转换的场景并且总是以正确的JMS类型到达OpenWire客户端,请选择配置中的JMS Transformer:
<transportConnector name="amqp" uri="amqp://localhost:5672?transport.transformer=jms"/>