Python Activemq 发送消息,并解决总是BytesMessage的问题

一、环境

  • 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",
})
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ActiveMQ 即时通讯服务 浅析http://www.cnblogs.com/hoojo/p/active_m...
    bboymonk阅读 5,360评论 0 11
  • 个人专题目录[https://www.jianshu.com/p/140e2a59db2c] 一、JMS简介 全称...
    Java及SpringBoot阅读 6,313评论 0 10
  • 简介 ActiveMQ 特点 ActiveMQ 是由 Apache 出品的一款开源消息中间件,旨在为应用程序提供高...
    预流阅读 11,133评论 4 21
  • 1. 同步索引库分析 方案一:在taotao-manager中,添加商品的业务逻辑中,添加一个同步索引库的业务逻辑...
    东方舵手阅读 3,355评论 0 1
  • 即使是繁琐枯燥的洗碗擦桌子也透露着生活的气息,在洗洁精的泡泡中映射出一天辛苦工作后片刻的欢愉与放松。 作为北京20...
    大美的打字机阅读 2,586评论 0 0