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实现控制台进度条功能
Jan 04 Python
Django实现自定义404,500页面教程
Mar 26 Python
pandas修改DataFrame列名的方法
Apr 08 Python
python实现Windows电脑定时关机
Jun 20 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
Dec 20 Python
Python实现DDos攻击实例详解
Feb 02 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
Apr 29 Python
手写一个python迭代器过程详解
Aug 27 Python
Python requests获取网页常用方法解析
Feb 20 Python
Python基础之字典常见操作经典实例详解
Feb 26 Python
Python 3.8 新功能来一波(大部分人都不知道)
Mar 11 Python
python 使用cycle构造无限循环迭代器
Dec 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 mssql 数据库分页SQL语句
2008/12/16 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
2015/12/16 PHP
php简单随机字符串生成方法示例
2017/04/19 PHP
浅析php如何实现爬取数据原理
2018/09/27 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
2019/06/08 PHP
Maps Javascript
2007/01/22 Javascript
jQuery学习笔记[1] jQuery中的DOM操作
2010/12/03 Javascript
JQuery文字列表向上滚动的代码
2013/11/13 Javascript
javascript初学者常用技巧
2014/09/02 Javascript
JQuery调用绑定click事件的3种写法
2015/03/28 Javascript
JS实现控制表格行内容垂直对齐的方法
2015/03/30 Javascript
JavaScript运动减速效果实例分析
2015/08/04 Javascript
JavaScript开发Chrome浏览器扩展程序UI的教程
2016/05/16 Javascript
全面了解JS中的匿名函数
2016/06/29 Javascript
移动web开发之touch事件实例详解
2018/01/17 Javascript
微信小程序如何获取用户手机号
2018/01/26 Javascript
Vue 获取数组键名的方法
2018/06/21 Javascript
jQuery移动端跑马灯抽奖特效升级版(抽奖概率固定)实现方法
2019/01/18 jQuery
详解vue 2.6 中 slot 的新用法
2019/07/09 Javascript
NodeJs 实现简单WebSocket即时通讯的示例代码
2019/08/05 NodeJs
在 Django/Flask 开发服务器上使用 HTTPS
2014/07/03 Python
Python中的作用域规则详解
2015/01/30 Python
Python实现的计算器功能示例
2018/04/26 Python
python实现画一颗树和一片森林
2018/06/25 Python
在scrapy中使用phantomJS实现异步爬取的方法
2018/12/17 Python
python url 参数修改方法
2018/12/26 Python
django 简单实现登录验证给你
2019/11/06 Python
python实现小程序推送页面收录脚本
2020/04/20 Python
Python操作MySQL数据库的示例代码
2020/07/13 Python
使用phonegap检测网络状态的方法
2017/03/30 HTML / CSS
建筑工程专业学生的自我评价
2013/12/25 职场文书
致长跑运动员广播稿
2014/01/31 职场文书
农村面貌改造提升实施方案
2014/03/18 职场文书
开业典礼主持词
2014/03/21 职场文书
博士给导师的自荐信
2015/03/06 职场文书
Oracle 死锁的检测查询及处理
2021/09/25 Oracle