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开发之基于thread线程搜索本地文件的方法
Nov 11 Python
详解Python实现按任意键继续/退出的功能
Aug 19 Python
python 获取当天凌晨零点的时间戳方法
May 22 Python
在python中实现将一张图片剪切成四份的方法
Dec 05 Python
对python:循环定义多个变量的实例详解
Jan 20 Python
学习python分支结构
May 17 Python
在python下使用tensorflow判断是否存在文件夹的实例
Jun 10 Python
基于python实现从尾到头打印链表
Nov 02 Python
matplotlib绘制多个子图(subplot)的方法
Dec 03 Python
Python 定义只读属性的实现方式
Mar 05 Python
Django实现内容缓存实例方法
Jun 30 Python
PyCharm中关于安装第三方包的三个建议
Sep 17 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
超外差式晶体管收音机的组装与统调
2021/03/01 无线电
php 获得汉字拼音首字母的函数
2009/08/01 PHP
PHP 简单日历实现代码
2009/10/28 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
2017/07/27 PHP
PHP获取HTTP body内容的方法
2018/12/31 PHP
Javascript insertAfter() 实现函数代码
2011/10/12 Javascript
JavaScript中判断函数、变量是否存在
2015/06/10 Javascript
基于jQuery实现的仿百度首页滑动选项卡效果代码
2015/11/16 Javascript
谈一谈bootstrap响应式布局
2016/05/23 Javascript
angularjs 源码解析之scope
2016/08/22 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
2019/06/18 jQuery
JavaScript解析JSON数据示例
2019/07/16 Javascript
jQuery实现查看图片功能
2020/12/01 jQuery
vue element和nuxt的使用技巧分享
2021/01/14 Vue.js
使用webpack和rollup打包组件库的方法
2021/02/25 Javascript
举例讲解如何在Python编程中进行迭代和遍历
2016/01/19 Python
Python实现读取并保存文件的类
2017/05/11 Python
Python使用pickle模块存储数据报错解决示例代码
2018/01/26 Python
Python实现的各种常见分布算法示例
2018/12/13 Python
Python qrcode 生成一个二维码的实例详解
2020/02/12 Python
jupyter notebook 多环境conda kernel配置方式
2020/04/10 Python
面向新手解析python Beautiful Soup基本用法
2020/07/11 Python
Python 高效编程技巧分享
2020/09/10 Python
python图片合成的示例
2020/11/09 Python
你正在寻找的CSS3 动画技术
2011/07/27 HTML / CSS
英国购买威士忌网站:Master of Malt
2019/09/26 全球购物
体育教师工作总结的自我评价
2013/10/10 职场文书
中专毕业生求职简历的自我评价
2013/10/21 职场文书
幼儿园教师节活动方案
2014/02/02 职场文书
策划总监岗位职责
2014/02/16 职场文书
试用期员工工作自我评价
2014/09/10 职场文书
模范班主任事迹材料
2014/12/17 职场文书
党员进社区活动总结
2015/05/07 职场文书
MySQL 用 limit 为什么会影响性能
2021/09/15 MySQL
使用pipenv管理python虚拟环境的全过程
2021/09/25 Python
app场景下uniapp的扫码记录
2022/07/23 Java/Android