ActiveMQ 是Apache出品,最流行的. 功能强大的即时通讯和集成模式的开源服务器。
-
Windows下ActiveMQ下载与安装
ActiveMQ 由于是基于Java开发的,所以必须先配置JDK环境,而且ActiveMQ 必须与JDK版本匹配才可以。本文是
ActiveMQ 5.10.0 Release
,JDK版本为1.8。
解压下载的文件到指定的位置。 -
ActiveMQ目录及启动
bin 存放的是脚本文件 里面分32 位 64 位,可以选择启动
conf 存放的是基本配置文件(可以通过修改jetty-realm.properties 进行配置用户名密码等等)
data 存放的是日志文件
docs 存放的是说明文档
examples 存放的是简单实例
lib 存放的是activemq 所需jar 包
webapps 用于存放项目的目录
解压下载的文件到指定的位置,进入bin\win64目录,点击activemq.bat启动即可
启动截图如下
打开浏览器输入:
http://localhost:8161
,进入管理页面。默认登陆账号和密码都为admin
可进入控制台
导航菜单中
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()
结果截图:
版权声明:本文为Up_junior原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。