美文网首页
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