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中read()、readline()和readlines()三者间的区别和用法
Jul 30 Python
python安装numpy&安装matplotlib& scipy的教程
Nov 02 Python
python ddt实现数据驱动
Mar 14 Python
python删除某个字符
Mar 19 Python
Python爬虫包BeautifulSoup异常处理(二)
Jun 17 Python
transform python环境快速配置方法
Sep 27 Python
pyspark操作MongoDB的方法步骤
Jan 04 Python
Python日期时间Time模块实例详解
Apr 15 Python
Python 实现Image和Ndarray互相转换
Feb 19 Python
Python操作dict时避免出现KeyError的几种解决方法
Sep 20 Python
Python偏函数实现原理及应用
Nov 20 Python
使用python tkinter开发一个爬取B站直播弹幕工具的实现代码
Feb 07 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中操作Excel实例代码
2010/04/29 PHP
PHP curl伪造IP地址和header信息代码实例
2015/04/27 PHP
详解PHP队列的实现
2019/03/14 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
2019/08/06 PHP
javascript移动设备Web开发中对touch事件的封装实例
2014/06/05 Javascript
jQuery layui常用方法介绍
2016/07/25 Javascript
Angularjs中controller的三种写法分享
2016/09/21 Javascript
jQuery EasyUI 右键菜单--关闭标签/选项卡的简单实例
2016/10/10 Javascript
用jmSlip编写移动端顶部日历选择控件
2016/10/24 Javascript
如何用JS/HTML将时间戳转换为“xx天前”的形式
2017/02/06 Javascript
js 判断登录界面的账号密码是否为空
2017/02/08 Javascript
AngularJS页面带参跳转及参数解析操作示例
2017/06/28 Javascript
分析JS中this引发的bug
2017/12/12 Javascript
vue .sync修饰符的使用详解
2018/06/15 Javascript
koa上传excel文件并解析的实现方法
2018/08/09 Javascript
详解一次Vue低版本安卓白屏问题的解决过程
2019/05/30 Javascript
关于vue3默认把所有onSomething当作v-on事件绑定的思考
2020/05/15 Javascript
JS绘图Flot如何实现可选显示曲线图功能
2020/10/16 Javascript
vue中template的三种写法示例
2020/10/21 Javascript
python绘制铅球的运行轨迹代码分享
2017/11/14 Python
python通过elixir包操作mysql数据库实例代码
2018/01/31 Python
PyCharm+PySpark远程调试的环境配置的方法
2018/11/29 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
利用Python脚本批量生成SQL语句
2020/03/04 Python
Java ExcutorService优雅关闭方式解析
2020/05/30 Python
HTML5+lufylegend实现游戏中的卷轴
2016/02/29 HTML / CSS
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
2016/12/14 HTML / CSS
2014年元旦活动方案
2014/02/15 职场文书
初三班主任寄语大全
2014/04/04 职场文书
学习三严三实心得体会
2014/10/13 职场文书
遗愿清单观后感
2015/06/09 职场文书
行政复议答复书
2015/07/01 职场文书
银行大堂经理培训心得体会
2016/01/09 职场文书
《夹竹桃》教学反思
2016/02/23 职场文书
同学联谊会邀请函
2019/06/24 职场文书
分析并发编程之LongAdder原理
2021/06/29 Java/Android