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中的匿名函数使用简介
Apr 27 Python
Eclipse中Python开发环境搭建简单教程
Mar 23 Python
Python 使用类写装饰器的小技巧
Sep 30 Python
浅谈python写入大量文件的问题
Nov 09 Python
Pycharm+Scrapy安装并且初始化项目的方法
Jan 15 Python
Python3中exp()函数用法分析
Feb 19 Python
django的ORM模型的实现原理
Mar 04 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
Apr 03 Python
python垃圾回收机制(GC)原理解析
Dec 30 Python
python通过opencv实现图片裁剪原理解析
Jan 19 Python
django 利用Q对象与F对象进行查询的实现
May 15 Python
用Python selenium实现淘宝抢单机器人
Jun 18 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的日期与时间函数技巧
2008/04/24 PHP
PHP使用HTML5 FileApi实现Ajax上传文件功能示例
2019/07/01 PHP
初识javascript 文档碎片
2010/07/13 Javascript
有关DOM元素与事件的3个谜题
2010/11/11 Javascript
JS操作Cookies包括(读取添加与删除)
2012/12/26 Javascript
一个简单的JS鼠标悬停特效具体方法
2013/06/17 Javascript
jQuery操作表格(table)的常用方法、技巧汇总
2014/04/12 Javascript
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
JavaScript利用HTML DOM进行文档操作的方法
2016/03/28 Javascript
EasyUI学习之Combobox下拉列表(1)
2016/12/29 Javascript
vue.js+Element实现表格里的增删改查
2017/01/18 Javascript
JS实现的JSON序列化操作简单示例
2018/07/02 Javascript
用Node编写RESTful API接口的示例代码
2018/07/04 Javascript
探秘vue-rx 2.0(推荐)
2018/09/21 Javascript
Javascript通过控制类名更改样式
2019/05/24 Javascript
基于vue、react实现倒计时效果
2019/08/26 Javascript
Python实现对百度云的文件上传(实例讲解)
2017/10/21 Python
python3爬取淘宝信息代码分析
2018/02/10 Python
基于Python log 的正确打开方式
2018/04/28 Python
python3基于OpenCV实现证件照背景替换
2018/07/18 Python
Python/ArcPy遍历指定目录中的MDB文件方法
2018/10/27 Python
Python OpenCV实现鼠标画框效果
2020/08/19 Python
python中如何进行连乘计算
2020/05/28 Python
使用Pytorch搭建模型的步骤
2020/11/16 Python
用HTML5 实现橡皮擦的涂抹效果的教程
2015/05/11 HTML / CSS
基于HTML5 WebGL的3D机房的示例
2018/03/16 HTML / CSS
Bibloo匈牙利:女装、男装、童装及鞋子和配饰
2019/04/14 全球购物
Brora官网:英国领先的羊绒服装品牌
2019/08/28 全球购物
合作经营协议书
2014/04/17 职场文书
最美乡村医生事迹材料
2014/06/02 职场文书
机械专业技术员求职信
2014/06/14 职场文书
领导班子个人对照检查剖析材料
2014/09/29 职场文书
中小学校园安全广播稿
2014/09/29 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
小人国观后感
2015/06/11 职场文书
聊聊redis-dump工具安装问题
2022/01/18 Redis