Python ActiveMQ入门教程

  • Post author:
  • Post category:python


ActiveMQ 是Apache出品,最流行的. 功能强大的即时通讯和集成模式的开源服务器。



  • Windows下ActiveMQ下载与安装

    ActiveMQ 由于是基于Java开发的,所以必须先配置JDK环境,而且ActiveMQ 必须与JDK版本匹配才可以。本文是

    ActiveMQ 5.10.0 Release

    ,JDK版本为1.8。

    解压下载的文件到指定的位置。


  • ActiveMQ目录及启动
bin 存放的是脚本文件 里面分3264 位,可以选择启动
conf 存放的是基本配置文件(可以通过修改jetty-realm.properties 进行配置用户名密码等等)
data 存放的是日志文件
docs 存放的是说明文档
examples 存放的是简单实例
lib 存放的是activemq 所需jar 包
webapps 用于存放项目的目录
解压下载的文件到指定的位置,进入bin\win64目录,点击activemq.bat启动即可

启动截图如下

截图1

打开浏览器输入:

http://localhost:8161

,进入管理页面。默认登陆账号和密码都为admin

可进入控制台

截图2

导航菜单中

Queues 是队列方式消息
Topics 是主题方式消息
Subscribers 消息订阅监控查询
Connections 可以查看链接数,分别可以查看xmpp、ssl、stomp、openwire、ws和网络链接
Network 是网络链接数监控
Send 可以发送消息数据。

  • python安装stomp
输入如下命令安装stomp
pip install stomp.py
安装完成之后,可以做一个简单的连接测试了。

在conf目录下,修改activemq.xml,注册账号和密码

添加如下代码:

    <!-- 添加访问ActiveMQ的账号密码 -->
        <plugins>
            <simpleAuthenticationPlugin>
                <users>
                    <authenticationUser username="manbuzhe" password="20180725" groups="users,admins"/>
                </users>
            </simpleAuthenticationPlugin>
        </plugins>
         <!-- 必须绑定端口,这样ActiveMQ启动的时候才会自动监听stomp://localhost:61613,很重要-->
        <transportConnectors>
            <transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/>
            <transportConnector uri="stomp://localhost:61613"/>
        </transportConnectors>


发送端

import stomp
import time
# 推送到主题
__topic_name1 = '/topic/FirstTopic'
__topic_name2 = '/topic/SecondTopic'
__host = '127.0.0.1'
__port = 61613
__user = 'manbuzhe'
__password = '20180725'

def send_to_topic(topic, msg):

    if topic == 1:
        conn.send(__topic_name1, msg)
    else:
        conn.send(__topic_name2, msg)


if __name__ == '__main__':
    conn = stomp.Connection10([(__host, __port)])
    conn.start()
    conn.connect(__user, __password, wait=True)
    for i in range(10):
        send_to_topic(1, 'topic1: 测试信息1...')
        send_to_topic(2, 'topic2: 测试信息2...')
        time.sleep(5)
    conn.disconnect()


接收端


# -*-coding:utf-8-*-
import stomp

__listener_name = 'SampleListener'
__topic_name1 = '/topic/FirstTopic'
__topic_name2 = '/topic/SecondTopic'
__host = '127.0.0.1'
__port = 61613
__user = 'manbuzhe'
__password = '20180725'

class SampleListener(object):

    def on_message(self, headers, message):
        print('每5秒发送一次')
        print('headers: %s' % headers['destination'])
        print('message: %s\n' % message)


## 从主题接收消息
def receive_from_topic():

    conn = stomp.Connection10([(__host, __port)])
    conn.set_listener(__listener_name, SampleListener())
    conn.start()
    conn.connect(__user, __password, wait=True)
    conn.subscribe(__topic_name1)
    conn.subscribe(__topic_name2)
    while True:
        pass
    conn.disconnect()


if __name__ == '__main__':

    receive_from_topic()

结果截图:

截图3



版权声明:本文为Up_junior原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。