一熬丧、環(huán)境
$ python3 --version
Python 3.5.3
ActiveMQ
Version 5.11.1
,部署于docker容器
二怀挠、準(zhǔn)備工作
sudo pip3 install stomp.py
锹引,安裝stomp用于python連接mq
stomp協(xié)議使用61613
端口建立連接,首先確認(rèn)activeMq服務(wù)是否支持該連接
docker ps | grep activemq
查看容器id唆香,這里以a7d981cf6176 為例
docker exec -it a7d981cf6176 bash
進(jìn)入容器
cd /usr/local/apache-activemq/conf/
進(jìn)入配置目錄
vi activemq.xml
編輯配置文件嫌变,transportConnectors節(jié)點下如果沒有stomp協(xié)議,添加一行并保存退出到宿主機(jī)
<transportConnector name="stomp" uri="stomp://0.0.0.0:61613"/>
docker restart a7d981cf6176
重啟mq服務(wù)
三躬它、復(fù)現(xiàn)
關(guān)于python使用stomp連接mq網(wǎng)上一大堆腾啥,這里暫不展開
具體發(fā)送消息處代碼
conn.send(destination="/topic/testTopic", body="your message !")
在消息接消費(fèi)處,始終顯示BytesMessage冯吓,預(yù)期為TextMessage
參考官方文檔http://activemq.apache.org/stomp.html 中Working with JMS Text/Bytes Messages and Stomp 章節(jié)倘待,表示如果包含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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者