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