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 排列组合之itertools
Mar 20 Python
使用Python中PDB模块中的命令来调试Python代码的教程
Mar 30 Python
Python中比较特别的除法运算和幂运算介绍
Apr 05 Python
详解在Python程序中自定义异常的方法
Oct 16 Python
在Python中使用AOP实现Redis缓存示例
Jul 11 Python
python 通过麦克风录音 生成wav文件的方法
Jan 09 Python
Python爬虫 urllib2的使用方法详解
Sep 23 Python
python itsdangerous模块的具体使用方法
Feb 17 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
Apr 30 Python
增大python字体的方法步骤
Jul 05 Python
Python使用socket模块实现简单tcp通信
Aug 18 Python
pytorch 运行一段时间后出现GPU OOM的问题
Jun 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抽象工厂模式(Elgg)
2010/03/21 PHP
php将access数据库转换到mysql数据库的方法
2014/12/24 PHP
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
2016/03/21 PHP
用Javascript 和 CSS 实现脚注(Footnote)效果
2009/09/09 Javascript
javascript中String类的subString()方法和slice()方法
2011/05/24 Javascript
jquery ajax的success回调函数中实现按钮置灰倒计时
2013/11/19 Javascript
JavaScript跨平台的开源框架NativeScript
2015/03/24 Javascript
JavaScript简单修改窗口大小的方法
2015/08/03 Javascript
Form表单按回车自动提交表单的实现方法
2016/11/18 Javascript
详解JavaScript中数组的reduce方法
2016/12/02 Javascript
浅谈JavaScript中promise的使用
2017/01/11 Javascript
vue使用原生js实现滚动页面跟踪导航高亮的示例代码
2018/10/25 Javascript
在Vue中用canvas实现二维码和图片合成海报的方法
2019/06/10 Javascript
jQuery删除/清空指定元素的所有子节点实例代码
2019/07/04 jQuery
[01:34]2016国际邀请赛中国区预选赛IG战队教练采访
2016/06/27 DOTA
[56:46]Liquid vs IG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[30:55]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第二场 11.18
2020/11/18 DOTA
python实现根据用户输入从电影网站获取影片信息的方法
2015/04/07 Python
Python生成器(Generator)详解
2015/04/13 Python
理解Python中的类与实例
2015/04/27 Python
Python中设置变量访问权限的方法
2015/04/27 Python
python中defaultdict的用法详解
2017/06/07 Python
浅谈python的dataframe与series的创建方法
2018/11/12 Python
python 从文件夹抽取图片另存的方法
2018/12/04 Python
详解Html5中video标签那些属性和方法
2019/07/01 HTML / CSS
课例研修方案
2014/05/31 职场文书
承诺书范文
2014/06/03 职场文书
国庆节活动总结
2014/08/26 职场文书
职业生涯规划书之大学四年
2019/08/07 职场文书
导游词之无锡古运河
2019/11/14 职场文书
Django开发RESTful API实现增删改查(入门级)
2021/05/10 Python
vue+element ui实现锚点定位
2021/06/29 Vue.js
教你修复 Win11应用商店加载空白问题
2021/12/06 数码科技
实战 快速定位MySQL的慢SQL
2022/03/22 MySQL
apache ftpserver搭建ftp服务器
2022/05/20 Servers
mysql5.5中文乱码问题解决的有用方法
2022/05/30 MySQL