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简单实现基数排序算法
May 16 Python
python制作企业邮箱的爆破脚本
Oct 05 Python
Python字符串对象实现原理详解
Jul 01 Python
基于keras 模型、结构、权重保存的实现
Jan 24 Python
python使用pandas抽样训练数据中某个类别实例
Feb 28 Python
python使用gdal对shp读取,新建和更新的实例
Mar 10 Python
python如何调用java类
Jul 05 Python
通过Django Admin+HttpRunner1.5.6实现简易接口测试平台
Nov 11 Python
详解BeautifulSoup获取特定标签下内容的方法
Dec 07 Python
Python+Appium实现自动抢微信红包
May 21 Python
python tkinter Entry控件的焦点移动操作
May 22 Python
python异常中else的实例用法
Jun 15 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
ftp类(example.php)
2006/10/09 PHP
怎么样可以把 phpinfo()屏蔽掉?
2006/11/24 PHP
php字符串分割函数explode的实例代码
2013/02/07 PHP
PHP四种基本排序算法示例
2015/04/09 PHP
基于jquery的二级联动菜单实现代码
2011/04/25 Javascript
JS字符串处理实例代码
2013/08/05 Javascript
基于jquery实现等比缩放图片
2014/12/03 Javascript
原生Js实现简易烟花爆炸效果的方法
2015/03/20 Javascript
Grunt入门教程(自动任务运行器)
2015/08/06 Javascript
原生javascript实现的一个简单动画效果
2016/03/30 Javascript
jQuery实现的自动加载页面功能示例
2016/09/04 Javascript
js自定义瀑布流布局插件
2017/05/16 Javascript
vue组件Prop传递数据的实现示例
2017/08/17 Javascript
使用cookie绕过验证码登录的实现代码
2017/10/12 Javascript
Vue.js 点击按钮显示/隐藏内容的实例代码
2018/02/08 Javascript
详解Vue的钩子函数(路由导航守卫、keep-alive、生命周期钩子)
2018/07/24 Javascript
Angular6 写一个简单的Select组件示例
2018/08/20 Javascript
vue实现的仿淘宝购物车功能详解
2019/01/27 Javascript
ES6基础之解构赋值(destructuring assignment)
2019/02/21 Javascript
vue+webpack 更换主题N种方案优劣分析
2019/10/28 Javascript
vue实现放大镜效果
2020/09/17 Javascript
[01:17]Ti4 循环赛第一日回顾
2014/07/11 DOTA
[01:59][TI9趣味视频] 全明星赛奖励
2019/08/23 DOTA
Python脚本暴力破解栅栏密码
2015/10/19 Python
django-rest-swagger的优化使用方法
2019/08/29 Python
解决python 读取excel时 日期变成数字并加.0的问题
2019/10/08 Python
什么是python的必选参数
2020/06/21 Python
python爬虫中采集中遇到的问题整理
2020/11/27 Python
KIEHL’S科颜氏官方旗舰店:源自美国的顶级护肤品牌
2018/06/07 全球购物
门卫工作岗位职责
2013/12/17 职场文书
市场营销求职信范文
2014/02/21 职场文书
商务英语专业毕业生求职信
2014/07/06 职场文书
诉讼授权委托书
2014/10/15 职场文书
学雷锋感言
2015/08/03 职场文书
大学毕业生自我鉴定范文
2019/06/21 职场文书
学校就业保障协议书
2019/06/24 职场文书