Как отправить XML-сообщение из Python Client в загрузочный микросервис Spring - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть клиент Python, использующий библиотеку "stomp.py", которую я использую для отправки полезной нагрузки XML в микросервис загрузки Spring, в котором реализована десериализация сообщений JMS.

У меня есть простой класс Python

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 boot micro service, я получаю сообщение об ошибке

threw exception; nested exception is java.lang.ClassCastException: 
org.apache.activemq.command.ActiveMQBytesMessage cannot be cast to 
org.apache.activemq.command.ActiveMQTextMessage. 

Я понимаю вышеупомянутое исключение, но я не могу установить правильный тип контента, заголовки в клиенте python, поэтому это исключение не произойдет.

Я пробовал несколько вариантов, но все тщетно.Может кто-то пролить некоторый свет на то, что мне нужно установить тип контента, заголовки в клиенте.Заранее спасибо.

1 Ответ

0 голосов
/ 21 ноября 2018

Я решил проблему и ничего не изменил, кроме простого добавления в существующий код.Это было так просто, как

conn = stomp.StompConnection12(auto_content_length=False).

Информация вроде как скрыта и находится в документации протокола stomp.Но если кто-то сталкивается с такой же проблемой, как у меня, вышеупомянутый фрагмент кода решил мою проблему.

...