微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Amazon MQ将AMQP消息转换为JMS

如何解决Amazon MQ将AMQP消息转换为JMS

我有一个Python和Java Spring应用程序可以通过两种方式进行通信。堆栈主要基于Java / Spring构建,因此ActiveMQ和JMS是合理的选择。但是,我们添加一个需要与其余服务交互的Python应用程序,因此我使用了qpid质子(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”相对于其类型“协议”无效。和cvc-enumeration-valid:就枚举'[openwire]'而言,值'amqps'并不是有效的

AWS将Amazon MQ作为托管的ActiveMQ服务进行销售,但是它们似乎缺乏功能,因为从5.8版https://activemq.apache.org/amqp开始提供了从AMQP到JMS的映射,而我正在使用的Amazon MQ代理是在5.15.12版

我尝试将amp;transport.transformer=jmstransport.transformer=jms标头添加到代理URL的查询字符串中,并尝试在Python中使用STOMP作为协议(因为它是纯文本协议)应用而不是AMQP,但这些都不起作用。

那么,您是否知道任何潜在的丢失配置或其他方式,可以在Python应用程序中发送AMQP消息并在Java应用程序中接收JMS TextMessage?

解决方法

在开放源代码ActiveMQ 5.x代码中,默认情况下,AMQP传输已默认为JMS转换,因此,除非亚马逊版本已更改,否则如果您要对入站AMQP进行JMS转换,甚至无需明确设置该设置。消息。如果他们对此进行了更改,则需要与他们联系以确定如何更改该配置。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。