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基础入门之seed()方法的使用
May 15 Python
Python实现自动发送邮件功能
Mar 02 Python
Python编程产生非均匀随机数的几种方法代码分享
Dec 13 Python
基于python OpenCV实现动态人脸检测
May 25 Python
pandas 将索引值相加的方法
Nov 15 Python
python2与python3的print及字符串格式化小结
Nov 30 Python
Python多进程写入同一文件的方法
Jan 14 Python
python读csv文件时指定行为表头或无表头的方法
Jun 26 Python
Python学习笔记之lambda表达式用法详解
Aug 08 Python
python 叠加等边三角形的绘制的实现
Aug 14 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
Jul 14 Python
Python 操作 MySQL数据库
Sep 18 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
ThinkPHP控制器间实现相互调用的方法
2014/10/31 PHP
php递归遍历删除文件的方法
2015/04/17 PHP
PHP实现生成带背景的图形验证码功能
2016/10/03 PHP
php查找字符串中第一个非0的位置截取
2017/02/27 PHP
Laravel 对某一列进行筛选然后求和sum()的例子
2019/10/10 PHP
在textarea中屏蔽js的某个function的javascript代码
2007/04/20 Javascript
JS实现淡蓝色简洁竖向Tab点击切换效果
2015/10/06 Javascript
javascript点击按钮实现隐藏显示切换效果
2016/02/03 Javascript
js 获取经纬度的实现方法
2016/06/20 Javascript
全面接触神奇的Bootstrap导航条实战篇
2016/08/01 Javascript
Vue.js使用v-show和v-if的注意事项
2016/12/13 Javascript
js中Number数字数值运算后值不对的解决方法
2017/02/28 Javascript
Vue中computed与methods的区别详解
2018/03/24 Javascript
解决vuecli3.0热更新失效的问题
2018/09/19 Javascript
jQuery模仿ToDoList实现简单的待办事项列表
2019/12/30 jQuery
JS手写一个自定义Promise操作示例
2020/03/16 Javascript
JavaScript实现刮刮乐效果
2020/11/01 Javascript
[41:52]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第二场 2月22日
2021/03/11 DOTA
Python下的Mysql模块MySQLdb安装详解
2014/04/09 Python
python下MySQLdb用法实例分析
2015/06/08 Python
详解Python多线程Selenium跨浏览器测试
2017/04/01 Python
Python 由字符串函数名得到对应的函数(实例讲解)
2017/08/10 Python
python使用PIL模块获取图片像素点的方法
2019/01/08 Python
Python3几个常见问题的处理方法
2019/02/26 Python
django配置连接数据库及原生sql语句的使用方法
2019/03/03 Python
使用matlab或python将txt文件转为excel表格
2019/11/01 Python
使用Python项目生成所有依赖包的清单方式
2020/07/13 Python
Python中openpyxl实现vlookup函数的实例
2020/10/28 Python
利用python制作拼图小游戏的全过程
2020/12/04 Python
全球烹饪课程的领先预订平台:Cookly
2020/01/28 全球购物
.NET方向面试题
2014/11/20 面试题
NET程序员上机面试题
2015/05/23 面试题
护士优质服务演讲稿
2014/08/26 职场文书
本溪关门山导游词
2015/02/09 职场文书
确保工程质量承诺书
2015/04/29 职场文书
使用python求解迷宫问题的三种实现方法
2022/03/17 Python