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 相关文章推荐
pyqt4教程之widget使用示例分享
Mar 07 Python
在类Unix系统上开始Python3编程入门
Aug 20 Python
python实现各进制转换的总结大全
Jun 18 Python
Python实现的三层BP神经网络算法示例
Feb 07 Python
Python文本处理之按行处理大文件的方法
Apr 09 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
Jul 08 Python
Python实用库 PrettyTable 学习笔记
Aug 06 Python
基于python实现蓝牙通信代码实例
Nov 19 Python
python通过移动端访问查看电脑界面
Jan 06 Python
python 如何在测试中使用 Mock
Mar 01 Python
单身狗福利?Python爬取某婚恋网征婚数据
Jun 03 Python
人工智能深度学习OpenAI baselines的使用方法
May 20 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
如何修改和添加Apache的默认站点目录
2013/07/05 PHP
php 生成自动创建文件夹并上传文件的示例代码
2014/03/07 PHP
PHP编程入门的基本语法知识点总结
2016/01/26 PHP
PHP面向对象程序设计之多态性的应用示例
2018/12/19 PHP
laravel解决迁移文件一次删除创建字段报错的问题
2019/10/24 PHP
TopList标签和JavaScript结合两例
2007/08/12 Javascript
JS中showModalDialog 的使用解析
2013/04/17 Javascript
利用js正则表达式验证手机号,email地址,邮政编码
2014/01/23 Javascript
jQuery实现的Div窗口震动特效
2014/06/09 Javascript
使用phantomjs进行网页抓取的实现代码
2014/09/29 Javascript
js解决select下拉选不中问题
2014/10/14 Javascript
JavaScript中对象介绍
2014/12/31 Javascript
jQuery仿Flash上下翻动的中英文导航菜单实例
2015/03/10 Javascript
JS+CSS简单树形菜单实现方法
2015/09/12 Javascript
浅谈Javascript中的函数、this以及原型
2016/10/09 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
Vue2.X 通过AJAX动态更新数据
2018/07/17 Javascript
vue-cli 3 全局过滤器的实例代码详解
2019/06/03 Javascript
Python基于twisted实现简单的web服务器
2014/09/29 Python
python select.select模块通信全过程解析
2017/09/20 Python
python实现机械分词之逆向最大匹配算法代码示例
2017/12/13 Python
python Celery定时任务的示例
2018/03/13 Python
利用Python如何批量更新服务器文件
2018/07/29 Python
python装饰器相当于函数的调用方式
2019/12/27 Python
Python参数传递实现过程及原理详解
2020/05/14 Python
python 邮件检测工具mmpi的使用
2021/01/04 Python
CSS3效果:自定义“W”形运行轨迹实例
2017/03/29 HTML / CSS
让IE下支持Html5的placeholder属性的插件
2014/09/02 HTML / CSS
英国马莎百货官网:Marks & Spencer
2016/07/29 全球购物
人力资源管理专业毕业生推荐信
2013/11/07 职场文书
党章学习思想汇报
2014/01/14 职场文书
大一工商管理职业生涯规划:有梦最美,行动相随
2014/09/18 职场文书
2015中学学校工作总结
2015/07/20 职场文书
2016入党积极分子考察评语
2015/12/01 职场文书
Apache压力测试工具的安装使用
2021/03/31 Servers
浅谈Python基础之列表那些事儿
2021/05/11 Python