我有一个 Python 和 Java Spring 应用程序以两种方式通信。该堆栈主要基于 Java/Spring 构建,因此 ActiveMQ 和 JMS 是合乎逻辑的选择。但是,我们添加了一个需要与其余服务交互的 Python 应用程序,因此我使用了 qpid proton(AMQP 库)并在 ActiveMQ 配置中添加了以下配置以使其正常工作:
<transportConnectors>
<transportConnector name="openwire" uri="ssl://0.0.0.0:61617?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="amqps" uri="amqp+ssl://0.0.0.0:5671?maximumConnections=1000&wireFormat.maxFrameSize=104857600&transport.transformer=jms"/>
</transportConnectors>
它在 ActiveMQ 上完美运行,并允许使用 AMQP 客户端发送/接收 JMS TextMessage。
不幸的是,Amazon MQ 拒绝了此配置并返回以下错误:
元素“transportConnector”上属性“name”的值“amqp+ssl”相对于其类型“protocol”无效。和 cvc-enumeration-valid:值 'amqps' 对于枚举 '[openwire]' 不是 facet-valid
AWS 将 Amazon MQ 作为托管 ActiveMQ 服务推销,但它们似乎缺乏功能,因为从 AMQP 到 JMS 的映射从 5.8 版开始可用:https ://activemq.apache.org/amqp和我的 Amazon MQ 代理m 使用的是版本 5.15.12
我尝试将amp;transport.transformer=jms
和transport.transformer=jms
标头添加到代理 URL 的查询字符串中,以及在 Python 应用程序而不是 AMQP 中使用 STOMP 作为协议(因为它是纯文本协议),但这些都不起作用。
那么,您知道我可以在 Python 应用程序中发送 AMQP 消息并在 Java 应用程序中接收 JMS TextMessage 的任何潜在缺失配置或其他方式吗?