最近工作需要用到多台主机数据传输,考虑过用socket,数据库,队列,最后决定还是用队列,但是发现网上关于ActiveMQ的代码要么是很早以前的了,要么是解释不够清楚,最后找了很多资料把他们合在一起
ActiveMQ 由于是基于Java开发的,所以必须先配置JDK环境,这里我分享一下我的,直接下载就行了
链接:https://pan.baidu.com/s/1tOS9ucdcYwkzzzlTNt9M3Q提取码:z07p
打开环境变量
1.点击新建
2.输入参数(这个是用来启动java程序的)
3.点击确定
4.双击path变量,点击新建
5.输入参数(%MAVEN_HOME%\bin)
6.保存退出就行了
JAVA_HOME
D:\development\java\jdk1.8.0_121(填自己的文件夹路径,可以看到bin文件夹)
%MAVEN_HOME%\bin # path里面的参数
在命令行中输入 java -version,如果显示下图效果,说明配置正确
cd 进入apache-activemq-5.15.2下的bin文件夹,输入activemq start,如果没有显示看一下是不是进错文件夹了
打开链接: http://127.0.0.1:8161/,如果看到这个页面说明activemq已经运行成功了
输入如下命令安装stomp
pip install stomp.py
# -*-coding:utf-8-*-
import stomp
import time
# 队列名(接收方可以根据管道名来选择接受那个队列数据)
location_queue = "123456"
# 服务器ip,端口固定用这个
conn = stomp.Connection([('127.0.0.1', 61613)])
# 账号密码
conn.connect(username='admin', passcode='admin', wait=True)
def send_to_queue(msg):
print('---------消息发送--------------')
# body=数据, destination=根据队列名传输数据,如果队列不存在,就创建一个
conn.send(body=str(msg), destination=location_queue)
print(msg)
if __name__ == '__main__':
send_to_queue('len 123')
# receive_from_queue()
conn.disconnect()
# -*-coding:utf-8-*-
import stomp
# 队列名
location_queue = "123456"
conn = stomp.Connection([('127.0.0.1', 61613)])
conn.connect(username='admin', passcode='admin', wait=True)
class SampleListener(object):
def on_message(self, headers, message):
print('headers: %s' % headers)
print('message: %s' % message)
def receive_from_queue():
# 如果接受数据,就调用这个类,里面的参数是类名和类,名称必须一致
conn.set_listener('SampleListener', SampleListener())
# 从选择的管道中区数据,管道名,id(随便写一个数字就行)
conn.subscribe(location_queue, 12)
# 不能让程序停止,负责每传一次数据都得接收一次
while True:
pass
if __name__ == '__main__':
receive_from_queue()
conn.disconnect()
message是传输的数据
headers是携带的配置参数,说几个主要参数:
content-length: 数据长度
enpires:到期时间(默认为0)
destination: 指的是网页queue主体下的123456队列
timestamp:时间戳
本人对网页研究的也不深,我把我知道讲解一下
到这就已经结束了,本人也是今天刚了解的ActiveMQ,把知道的就先展示出来,也方便大家少花点时间
这里感谢三位大佬的分享,这是他们链接,如果还有什么不懂的可以看一下,至于为什么是参考代码注释,是因为模块版本原因代码无法使用,但是讲解的还是挺好的,在这里感谢大家的支持.