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的urllib库提交WEB表单
Feb 24 Python
python机器学习之神经网络实现
Oct 13 Python
python实现学员管理系统
Feb 26 Python
深入浅析Python 中 is 语法带来的误解
May 07 Python
python实现按行分割文件
Jul 22 Python
Python类中的魔法方法之 __slots__原理解析
Aug 26 Python
Python实现二叉树的最小深度的两种方法
Sep 30 Python
深入浅析python的第三方库pandas
Feb 13 Python
pandas分批读取大数据集教程
Jun 06 Python
python 动态渲染 mysql 配置文件的示例
Nov 20 Python
pytorch 实现多个Dataloader同时训练
May 29 Python
python数据可视化JupyterLab实用扩展程序Mito
Nov 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
11个PHP 分页脚本推荐
2011/08/15 PHP
PHP spl_autoload_register实现自动加载研究
2011/12/06 PHP
PHP写日志的实现方法
2014/11/05 PHP
WampServer下安装多个版本的PHP、mysql、apache图文教程
2015/01/07 PHP
PHP list() 将数组中的值赋给变量的简单实例
2016/06/13 PHP
php实现的网页版剪刀石头布游戏示例
2016/11/25 PHP
PHP fopen中文文件名乱码问题解决方案
2020/10/28 PHP
从零开始学习jQuery (六) jquery中的AJAX使用
2011/02/23 Javascript
基于JQUERY的两个ListBox子项互相调整的实现代码
2011/05/07 Javascript
JavaScript高级程序设计 阅读笔记(十三) js定义类或对象
2012/08/14 Javascript
JS及PHP代码编写八大排序算法
2016/07/12 Javascript
原生js实现放大镜效果
2017/01/11 Javascript
Vue使用自定义指令实现拖拽行为实例分析
2020/06/06 Javascript
[01:25:09]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第二场
2014/05/24 DOTA
[02:05]2014DOTA2西雅图国际邀请赛 BBC第二天小组赛总结
2014/07/11 DOTA
[45:25]完美世界DOTA2联赛循环赛 PXG vs IO 第一场 11.06
2020/11/09 DOTA
Python Tkinter基础控件用法
2014/09/03 Python
使用Python编写一个模仿CPU工作的程序
2015/04/16 Python
python 处理数字,把大于上限的数字置零实现方法
2019/01/28 Python
PyTorch加载预训练模型实例(pretrained)
2020/01/17 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
2020/02/18 Python
HTML5和CSS3实例教程总结(推荐)
2016/07/18 HTML / CSS
LN-CC美国:伦敦时尚生活的缩影
2019/02/19 全球购物
C语言笔试题
2014/09/04 面试题
财务经理岗位职责
2013/11/09 职场文书
八一演出活动方案
2014/02/03 职场文书
销售口号大全
2014/06/11 职场文书
群众路线领导班子四风对照检查材料
2014/09/27 职场文书
财产分割协议书范本
2014/11/03 职场文书
优秀教师先进材料
2014/12/16 职场文书
党员争先创优承诺书
2015/01/20 职场文书
2015年学校心理健康教育工作总结
2015/05/11 职场文书
2015年幼儿教育工作总结
2015/07/24 职场文书
2016高考感言
2015/08/01 职场文书
初中体育教学随笔
2015/08/15 职场文书
简单总结SpringMVC拦截器的使用方法
2021/06/28 Java/Android