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脚本实现统计日志文件中的ip访问次数代码分享
Aug 06 Python
Python中import导入上一级目录模块及循环import问题的解决
Jun 04 Python
Python冒泡排序注意要点实例详解
Sep 09 Python
解决Python2.7读写文件中的中文乱码问题
Apr 12 Python
修改 CentOS 6.x 上默认Python的方法
Sep 06 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
Nov 07 Python
python实现门限回归方式
Feb 29 Python
tensorflow图像裁剪进行数据增强操作
Jun 30 Python
Python如何截图保存的三种方法(小结)
Sep 01 Python
Python3+PyCharm+Django+Django REST framework配置与简单开发教程
Feb 16 Python
PyQt 如何创建自定义QWidget
Mar 24 Python
Python实现双向链表
May 25 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
一些常用的php简单命令代码集锦
2007/09/24 PHP
PHP设计模式之装饰者模式
2012/02/29 PHP
PHP时间戳 strtotime()使用方法和技巧
2013/10/29 PHP
codeigniter中view通过循环显示数组数据的方法
2015/03/20 PHP
php smtp实现发送邮件功能
2017/06/22 PHP
PHP implode()函数用法讲解
2019/03/08 PHP
Yii框架通过请求组件处理get,post请求的方法分析
2019/09/03 PHP
基于jquery的防止大图片撑破页面的实现代码(立即缩放)
2011/10/24 Javascript
微信分享的标题、缩略图、连接及描述设置方法
2014/10/14 Javascript
详解AngularJS中$http缓存以及处理多个$http请求的方法
2016/02/06 Javascript
JavaScript中获取纯正的undefined的方法
2016/03/06 Javascript
js获取iframe中的window对象的实现方法
2016/05/20 Javascript
JS对HTML表格进行增删改操作
2016/08/22 Javascript
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
2016/10/27 Javascript
vue.js实现请求数据的方法示例
2017/02/07 Javascript
jquery实现图片跟随鼠标的实例
2017/10/17 jQuery
小程序异步问题之多个网络请求依次执行并依次收集请求结果
2019/05/05 Javascript
改进 JavaScript 和 Rust 的互操作性并深入认识 wasm-bindgen 组件
2019/07/13 Javascript
ElementUI radio组件选中小改造
2019/08/12 Javascript
[02:39]DOTA2英雄基础教程 极限穿梭编织者
2013/12/05 DOTA
Python的gevent框架的入门教程
2015/04/29 Python
python 字典中取值的两种方法小结
2018/08/02 Python
详解Python3除法之真除法、截断除法和下取整对比
2019/05/23 Python
python版DDOS攻击脚本
2019/06/12 Python
Tensorflow之梯度裁剪的实现示例
2020/03/08 Python
Python基于Tkinter编写crc校验工具
2020/05/06 Python
解决Python3.8运行tornado项目报NotImplementedError错误
2020/09/02 Python
详解python的变量缓存机制
2021/01/24 Python
python绘制高斯曲线
2021/02/19 Python
Expedia韩国官网:亚洲发展最快的在线旅游门户网站
2018/02/26 全球购物
Tostadora意大利:定制T恤
2019/04/08 全球购物
jQuery treeview树形结构应用
2021/03/24 jQuery
工程类专业自荐信范文
2014/03/09 职场文书
委托书范文
2014/04/02 职场文书
2014财务年终工作总结
2014/12/08 职场文书
毕业论文致谢信
2015/05/14 职场文书