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之Python文档
Oct 10 Python
分享一个常用的Python模拟登陆类
Mar 29 Python
Flask-Mail用法实例分析
Jul 21 Python
Python时间序列处理之ARIMA模型的使用讲解
Apr 02 Python
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
May 04 Python
python requests指定出口ip的例子
Jul 25 Python
Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统
Sep 05 Python
使用 Python 清理收藏夹里已失效的网站
Dec 03 Python
pytorch 自定义卷积核进行卷积操作方式
Dec 30 Python
django自带的权限管理Permission用法说明
May 13 Python
容易被忽略的Python内置类型
Sep 03 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
Nov 02 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 array_flip() 删除重复数组元素专用函数
2010/05/16 PHP
一漂亮的PHP图片验证码实例
2014/03/21 PHP
CodeIgniter输出中文乱码的两种解决办法
2014/06/12 PHP
PHP制作3D扇形统计图以及对图片进行缩放操作实例
2014/10/23 PHP
PHP中上传文件打印错误错误类型分析
2019/04/14 PHP
PHP 99乘法表的几种实现代码
2020/10/13 PHP
javascript之大字符串的连接的StringBuffer 类
2007/05/08 Javascript
Javascript与flash交互通信基础教程
2008/08/07 Javascript
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
2012/02/27 Javascript
jquery实现select选中行、列合计示例
2014/04/25 Javascript
10分钟学会写Jquery插件实例教程
2014/09/06 Javascript
JS获取下拉框显示值和判断单选按钮的方法
2015/07/09 Javascript
详解angularjs的数组传参方式的简单实现
2017/07/28 Javascript
PHP 实现一种多文件上传的方法
2017/09/20 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
vue router 配置路由的方法
2018/07/26 Javascript
利用d3.js实现蜂巢图表带动画效果
2019/09/03 Javascript
JS页面获取 session 值,作用域和闭包学习笔记
2019/10/16 Javascript
Openlayers实现点闪烁扩散效果
2020/09/24 Javascript
如何在vue 中使用柱状图 并自修改配置
2021/01/21 Vue.js
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
浅谈python jieba分词模块的基本用法
2017/11/09 Python
python将每个单词按空格分开并保存到文件中
2018/03/19 Python
Python实现的FTP通信客户端与服务器端功能示例
2018/03/28 Python
python机器学习实现决策树
2019/11/11 Python
Python3爬虫mitmproxy的安装步骤
2020/07/29 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
2020/12/01 Python
SmartBuyGlasses台湾:名牌眼镜,名牌太阳眼镜及隐形眼镜
2017/01/04 全球购物
KIKO MILANO英国官网:意大利知名化妆品和护肤品品牌
2017/09/25 全球购物
火山动力Java笔试题
2014/06/26 面试题
《长江之歌》教学反思
2014/04/17 职场文书
党的群众路线教育实践活动对照检查材料(四风)
2014/09/27 职场文书
新年晚会开场白
2015/05/29 职场文书
写作指导:怎么书写竞聘演讲稿?
2019/07/04 职场文书
利用Python读取微信朋友圈的多种方法总结
2021/08/23 Python
MySQL之MyISAM存储引擎的非聚簇索引详解
2022/03/03 MySQL