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结合opencv实现人脸检测与跟踪
Jun 08 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
May 08 Python
使用apidoc管理RESTful风格Flask项目接口文档方法
Feb 07 Python
浅谈python配置与使用OpenCV踩的一些坑
Apr 02 Python
使用Python实现从各个子文件夹中复制指定文件的方法
Oct 25 Python
浅谈Python 列表字典赋值的陷阱
Jan 20 Python
python实现打砖块游戏
Feb 25 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
Mar 09 Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
Mar 18 Python
Django全局启用登陆验证login_required的方法
Jun 02 Python
如何用Matplotlib 画三维图的示例代码
Jul 28 Python
python周期任务调度工具Schedule使用详解
Nov 23 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
第九节--绑定
2006/11/16 PHP
php excel reader读取excel内容存入数据库实现代码
2012/12/06 PHP
PHP判断远程图片或文件是否存在的实现代码
2014/02/20 PHP
PHP结合Vue实现滚动底部加载效果
2017/12/17 PHP
prototype class详解
2006/09/07 Javascript
js网页侧边随页面滚动广告效果实现
2011/04/14 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
2013/06/09 Javascript
调整小数的格式保留小数点后两位
2014/05/14 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
js拖拽的原型声明和用法总结
2016/04/04 Javascript
jQuery实现的选择商品飞入文本框动画效果完整实例
2016/08/10 Javascript
利用JS轻松实现获取表单数据
2016/12/06 Javascript
常见的浏览器Hack技巧整理
2017/06/29 Javascript
Vue中插入HTML代码的方法
2018/09/21 Javascript
vue项目前端知识点整理【收藏】
2019/05/13 Javascript
NProgress显示顶部进度条效果及使用详解
2019/09/21 Javascript
js实现淘宝首页的banner栏效果
2019/11/26 Javascript
js实现内置计时器
2019/12/16 Javascript
JS数组索引检测中的数据类型问题详解
2021/01/11 Javascript
用Python的Django框架编写从Google Adsense中获得报表的应用
2015/04/17 Python
Python学习之Django的管理界面代码示例
2018/02/10 Python
python3获取两个日期之间所有日期,以及比较大小的实例
2018/04/08 Python
基于python实现聊天室程序
2018/07/27 Python
浅谈pycharm的xmx和xms设置方法
2018/12/03 Python
浅谈python 读excel数值为浮点型的问题
2018/12/25 Python
Python Socketserver实现FTP文件上传下载代码实例
2020/03/27 Python
详解Python中Pyyaml模块的使用
2020/10/08 Python
CSS3 滤镜 webkit-filter详细介绍及使用方法
2012/12/27 HTML / CSS
在C#中如何实现多态
2014/07/02 面试题
前台接待岗位职责
2013/12/03 职场文书
会计工作心得体会
2014/01/13 职场文书
校庆活动策划方案
2014/06/05 职场文书
关于读书的演讲稿1000字
2014/08/27 职场文书
群众路线调研报告范文
2014/11/03 职场文书
亲属关系公证书样本
2015/01/23 职场文书
spring注解 @PropertySource配置数据源全流程
2022/03/25 Java/Android