ActiveMQ:使用Python访问ActiveMQ的方法


Posted in Python onJanuary 30, 2019

Windows 10家庭中文版,Python 3.6.4,stomp.py 4.1.21

ActiveMQ支持Python访问,提供了基于STOMP协议(端口为61613)的库。

ActiveMQ的官文Cross Language Clients中给出了更详细的介绍,并附有示例代码,如下图:

第一行为常规Python访问,第二行为使用Jython访问的方式,四个操作。

ActiveMQ:使用Python访问ActiveMQ的方法

Python访问ActiveMQ需要使用stomp.py,见其官网。

下载官网的代码,解压,命令行进入其目录,使用pyhthon setup.py install即可安装好,然后就可以使用stomp.py了。

官方示例代码:给队列test发送一个消息,也可以把第7行的destination的“/queue/”去掉,只剩test。

import stomp

conn = stomp.Connection()
conn.set_listener('', MyListener())
conn.start()
conn.connect('admin', 'password', wait=True)
conn.send(body=' '.join(sys.argv[1:]), destination='/queue/test')
conn.disconnect()

测试结果:test队列接收到消息数量增加了

ActiveMQ:使用Python访问ActiveMQ的方法

stomp.Connection()默认是connect.StompConnection11(协议1.1),还可以可以选择1.0、1.2。

ActiveMQ:使用Python访问ActiveMQ的方法

在官方代码中,stomp.Connection()的参数为空,实际上可以有很多参数,比如,设置Broker的IP地址和端口,如下:其中的host_and_ports就是设置IP和端口的。

ActiveMQ:使用Python访问ActiveMQ的方法

IP和端口设置示例:

c = stomp.Connection([('127.0.0.1', 62613)])

这里我犯错了,端口我协程了8161(ActiveMQ的Web访问的端口),经查询(百度搜索到stackoverflow.com)才知,STOMP协议用的是61613(ActiveMQ的配置文件中):

ActiveMQ:使用Python访问ActiveMQ的方法

ActiveMQ官网的四个测试:

发送消息到队列Queue属于 点对点模式,不可以重复消费;

发送消息到主题Topic属于 发布/订阅模式,可以重复消费;

# Send a Message to an Apache ActiveMQ Queue 
import stomp
 
conn = stomp.Connection10()
 
conn.start()
 
conn.connect()
 
conn.send('SampleQueue', 'Simples Assim')
 
conn.disconnect()

# Receive a Message from an Apache ActiveMQ Queue
import stomp
import time
 
class SampleListener(object):
 def on_message(self, headers, msg):
 print(msg)
 
conn = stomp.Connection10()
 
conn.set_listener('SampleListener', SampleListener())
 
conn.start()
 
conn.connect()
 
conn.subscribe('SampleQueue')
 
time.sleep(1) # secs
 
conn.disconnect()

# Send a Message to an Apache ActiveMQ Topic 
import stomp
 
conn = stomp.Connection10()
 
conn.start()
 
conn.connect()
 
conn.send('/topic/SampleTopic', 'Simples Assim')
 
conn.disconnect()

# Receive a Message from an Apache ActiveMQ Topic (1)
import stomp
import time
 
class SampleListener(object):
 def on_message(self, headers, msg):
 print(msg)
 
conn = stomp.Connection10()
 
conn.set_listener('SampleListener', SampleListener())
 
conn.start()
 
conn.connect()
 
conn.subscribe('/topic/SampleTopic')
 
time.sleep(1) # secs
 
conn.disconnect()

# Receive a Message from an Apache ActiveMQ Topic (2)
import stomp
import time
 
class SampleListener(object):
 def on_message(self, headers, msg):
 print(msg)
 
conn = stomp.Connection10()
 
conn.set_listener('SampleListener', SampleListener())
 
conn.start()
 
conn.connect(headers={'client-id':'SampleClient'})
 
conn.subscribe(destination='/topic/SampleTopic', headers={'activemq.subscriptionName':'SampleSubscription'})
 
time.sleep(1) # secs
 
conn.disconnect()

以上这篇ActiveMQ:使用Python访问ActiveMQ的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python插件virtualenv搭建虚拟环境
Nov 20 Python
python画出三角形外接圆和内切圆的方法
Jan 25 Python
Python对ElasticSearch获取数据及操作
Apr 24 Python
Python 虚拟空间的使用代码详解
Jun 10 Python
python在新的图片窗口显示图片(图像)的方法
Jul 11 Python
python 判断字符串中是否含有汉字或非汉字的实例
Jul 15 Python
python遍历文件目录、批量处理同类文件
Aug 31 Python
QML实现钟表效果
Jun 02 Python
python的pip有什么用
Jun 17 Python
如何从csv文件构建Tensorflow的数据集
Sep 21 Python
Python生成pdf目录书签的实例方法
Oct 29 Python
将不规则的Python多维数组拉平到一维的方法实现
Jan 11 Python
python 发送和接收ActiveMQ消息的实例
Jan 30 #Python
Python批量生成特定尺寸图片及图画任意文字的实例
Jan 30 #Python
理想高通滤波实现Python opencv示例
Jan 30 #Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
Jan 30 #Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
Jan 30 #Python
对dataframe数据之间求补集的实例详解
Jan 30 #Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
Jan 30 #Python
You might like
xajax写的留言本
2006/11/25 PHP
php下载远程文件类(支持断点续传)
2008/11/14 PHP
PHP数组循环操作详细介绍 附实例代码
2013/02/03 PHP
如何用php获取文件名后缀
2013/06/09 PHP
PHP函数strip_tags的一个bug浅析
2014/05/22 PHP
php微信公众号开发(3)php实现简单微信文本通讯
2016/12/15 PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
2019/09/29 PHP
23个超流行的jQuery相册插件整理分享
2011/04/25 Javascript
Jquery 动态生成表格示例代码
2013/12/24 Javascript
原生JS实现的放大镜效果实例代码
2016/10/15 Javascript
Ajax与服务器(JSON)通信实例代码
2016/11/05 Javascript
完全深入学习Bootstrap表单
2016/11/28 Javascript
BootStrap CSS全局样式和表格样式源码解析
2017/01/20 Javascript
Angularjs单选改为多选的开发过程及问题解析
2017/02/17 Javascript
React 使用browserHistory项目访问404问题解决
2018/06/01 Javascript
使用javascript做时间倒数读秒功能的实例
2019/01/23 Javascript
vue实现侧边栏导航效果
2019/10/21 Javascript
axios如何取消重复无用的请求详解
2019/12/15 Javascript
Python2.6版本中实现字典推导 PEP 274(Dict Comprehensions)
2015/04/28 Python
python模块之paramiko实例代码
2018/01/31 Python
python实现在图片上画特定大小角度矩形框
2018/10/24 Python
python使用pygame实现笑脸乒乓球弹珠球游戏
2019/11/25 Python
使用python和pygame制作挡板弹球游戏
2019/12/03 Python
使用python创建生成动态链接库dll的方法
2020/05/09 Python
用React加CSS3实现微信拆红包动画效果
2017/03/13 HTML / CSS
国外平面设计第一市场:99designs
2016/10/25 全球购物
Bonprix法国:时尚、鞋子、家居
2020/12/29 全球购物
大学生文员专业个人求职信范文
2014/01/05 职场文书
团日活动策划书
2014/02/01 职场文书
网页美工求职信
2014/02/15 职场文书
考核工作实施方案
2014/03/30 职场文书
2014年财务工作总结与计划
2014/12/08 职场文书
机动车交通事故协议书
2015/01/29 职场文书
银行服务理念口号
2015/12/25 职场文书
2016教师读书思廉心得体会
2016/01/23 职场文书
《学会生存》读后感3篇
2019/12/09 职场文书