如何将 XML 消息从 Python 客户端发送到 Spring 启动微服务
How to send XML message from Python Client to a Spring boot microservice
我有一个使用 "stomp.py" 库的 python 客户端,我用它来将 XML 有效载荷发送到 Spring 启动微服务,该微服务具有反序列化 JMS 消息的实现.
我有一个简单的pythonclass
class ActiveMqMessageProducer():
def active_mq_props(self):
active_mq_property = PropertyParser.PropertyParser().get_property(property_for='active-mq')
return {'username': active_mq_property['username'], 'password': active_mq_property['password'], 'topic': active_mq_property['topic']}
def active_mq_connection(self):
props = self.active_mq_props()
conn = stomp.StompConnection12()
conn.start()
conn.connect(username=props['username'], passcode=props['password'], wait=True)
return conn
def send_payload(self, payload):
props = self.active_mq_props()
conn = self.active_mq_connection()
conn.send(destination=f'/topic/{props["topic"]}', body=payload)
conn.disconnect()
当我发送以下负载时
<?xml version="1.0" encoding="utf-8"?>
<line timestamp="2018-03-14T14:03:11+0000" id="866381">
<total/>
</line>
到Spring启动微服务报错
threw exception; nested exception is java.lang.ClassCastException:
org.apache.activemq.command.ActiveMQBytesMessage cannot be cast to
org.apache.activemq.command.ActiveMQTextMessage.
我理解上述异常,但我无法在 python 客户端中设置正确的 content-type、headers,因此不会发生此异常。
我尝试了一些变体,但都是徒劳的。
有人可以阐明我需要在客户端中设置 content-type、headers 的内容吗?
提前致谢。
我已经解决了这个问题,除了对我现有的代码进行简单的添加外,没有做任何更改。就像
一样简单
conn = stomp.StompConnection12(auto_content_length=False).
信息有点隐藏,位于 stomp 协议文档中。
但是,如果有人遇到与我类似的问题,上面的代码解决了我的问题。
我有一个使用 "stomp.py" 库的 python 客户端,我用它来将 XML 有效载荷发送到 Spring 启动微服务,该微服务具有反序列化 JMS 消息的实现.
我有一个简单的pythonclass
class ActiveMqMessageProducer():
def active_mq_props(self):
active_mq_property = PropertyParser.PropertyParser().get_property(property_for='active-mq')
return {'username': active_mq_property['username'], 'password': active_mq_property['password'], 'topic': active_mq_property['topic']}
def active_mq_connection(self):
props = self.active_mq_props()
conn = stomp.StompConnection12()
conn.start()
conn.connect(username=props['username'], passcode=props['password'], wait=True)
return conn
def send_payload(self, payload):
props = self.active_mq_props()
conn = self.active_mq_connection()
conn.send(destination=f'/topic/{props["topic"]}', body=payload)
conn.disconnect()
当我发送以下负载时
<?xml version="1.0" encoding="utf-8"?>
<line timestamp="2018-03-14T14:03:11+0000" id="866381">
<total/>
</line>
到Spring启动微服务报错
threw exception; nested exception is java.lang.ClassCastException:
org.apache.activemq.command.ActiveMQBytesMessage cannot be cast to
org.apache.activemq.command.ActiveMQTextMessage.
我理解上述异常,但我无法在 python 客户端中设置正确的 content-type、headers,因此不会发生此异常。
我尝试了一些变体,但都是徒劳的。 有人可以阐明我需要在客户端中设置 content-type、headers 的内容吗? 提前致谢。
我已经解决了这个问题,除了对我现有的代码进行简单的添加外,没有做任何更改。就像
一样简单conn = stomp.StompConnection12(auto_content_length=False).
信息有点隐藏,位于 stomp 协议文档中。 但是,如果有人遇到与我类似的问题,上面的代码解决了我的问题。