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逐行读写txt文件的实例讲解
Apr 03 Python
Windows下python3.7安装教程
Jul 31 Python
python画图系列之个性化显示x轴区段文字的实例
Dec 13 Python
Python爬虫 bilibili视频弹幕提取过程详解
Jul 31 Python
pygame库实现俄罗斯方块小游戏
Oct 29 Python
Pandas实现dataframe和np.array的相互转换
Nov 30 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
Sep 22 Python
PyTorch 随机数生成占用 CPU 过高的解决方法
Jan 13 Python
将数据集制作成VOC数据集格式的实例
Feb 17 Python
Python基于Serializer实现字段验证及序列化
Nov 04 Python
Python使用grequests并发发送请求的示例
Nov 05 Python
python3中apply函数和lambda函数的使用详解
Feb 28 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遍历数组的几种方法
2012/03/22 PHP
destoon二次开发入门示例
2014/06/20 PHP
destoon二次开发常用数据库操作
2014/06/21 PHP
php使用cookie实现记住用户名和密码实现代码
2015/04/27 PHP
php常用图片处理类
2016/03/16 PHP
PHP判断是否微信访问的方法示例
2019/03/27 PHP
使用Js让Html中特殊字符不被转义
2013/11/05 Javascript
简单js代码实现selece二级联动(推荐)
2014/02/18 Javascript
jquery新的绑定事件机制on方法的使用方法
2014/04/15 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
纯JavaScript手写图片轮播代码
2016/10/20 Javascript
JavaScript高仿支付宝倒计时页面及代码实现
2016/10/21 Javascript
Javascript之面向对象--方法
2016/12/02 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
2016/12/27 Javascript
Bootstrap缩略图与警告框学习使用
2017/02/08 Javascript
import与export在node.js中的使用详解
2017/09/28 Javascript
JS随机排序数组实现方法分析
2017/10/11 Javascript
JS基于递归实现网页版计算器的方法分析
2017/12/20 Javascript
vue将对象新增的属性添加到检测序列的方法
2018/02/24 Javascript
Vue插件打包与发布的方法示例
2018/08/20 Javascript
微信小程序实现选项卡效果
2018/11/06 Javascript
Vue的click事件防抖和节流处理详解
2019/11/13 Javascript
浅谈Vue3.0新版API之composition-api入坑指南
2020/04/30 Javascript
基于原生js实现判断元素是否有指定class名
2020/07/11 Javascript
antd多选下拉框一行展示的实现方式
2020/10/31 Javascript
实例解析Python的Twisted框架中Deferred对象的用法
2016/05/25 Python
python实现C4.5决策树算法
2018/08/29 Python
Python多图片合并PDF的方法
2019/01/03 Python
Python小进度条显示代码
2019/03/05 Python
Python unittest单元测试框架及断言方法
2020/04/15 Python
Python使用pyenv实现多环境管理
2021/02/05 Python
matplotlib之多边形选区(PolygonSelector)的使用
2021/02/24 Python
button在IE6/7下的黑边去除方案
2012/12/24 HTML / CSS
商场消防管理制度
2014/01/12 职场文书
公司人事管理制度
2015/08/05 职场文书
python中urllib包的网络请求教程
2022/04/19 Python