美文网首页
Python Activemq 发送消息,并解决总是BytesM

Python Activemq 发送消息,并解决总是BytesM

作者: 杰x6770 | 来源:发表于2019-11-11 15:35 被阅读0次

一、环境

  • Python
$ python3 --version
Python 3.5.3
  • ActiveMQ
    Version 5.11.1,部署于docker容器

二、准备工作

  • sudo pip3 install stomp.py,安装stomp用于python连接mq
  • stomp协议使用61613端口建立连接,首先确认activeMq服务是否支持该连接
    • docker ps | grep activemq查看容器id,这里以a7d981cf6176为例
    • docker exec -it a7d981cf6176 bash进入容器
    • cd /usr/local/apache-activemq/conf/进入配置目录
    • vi activemq.xml编辑配置文件,transportConnectors节点下如果没有stomp协议,添加一行并保存退出到宿主机
<transportConnector name="stomp" uri="stomp://0.0.0.0:61613"/>
  • docker restart a7d981cf6176重启mq服务

三、复现

  • 关于python使用stomp连接mq网上一大堆,这里暂不展开
  • 具体发送消息处代码
conn.send(destination="/topic/testTopic", body="your message !")
  • 在消息接消费处,始终显示BytesMessage,预期为TextMessage
  • 参考官方文档http://activemq.apache.org/stomp.htmlWorking with JMS Text/Bytes Messages and Stomp章节,表示如果包含content-length头,就是BytesMessage,否则是TextMessage,这里显然并没有传入任何头配置,也尝试手动传入None等均无效
  • 解决方式:传入amq-msg-type=text头配置即可
conn.send(destination="/topic/testTopic", body="your message !", headers={
  "amq-msg-type": "text",
})

相关文章

网友评论

      本文标题:Python Activemq 发送消息,并解决总是BytesM

      本文链接:https://www.haomeiwen.com/subject/ekutictx.html