博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ActiveMQ:使用Python访问ActiveMQ
阅读量:2241 次
发布时间:2019-05-09

本文共 2787 字,大约阅读时间需要 9 分钟。

Windows 10家庭中文版,Python 3.6.4,stomp.py 4.1.21

 

ActiveMQ支持Python访问,提供了基于STOMP协议(端口为61613)的库。

ActiveMQ的官文中给出了更详细的介绍,并附有示例代码,如下图:

第一行为常规Python访问,第二行为使用Jython访问的方式,四个操作。

 

Python访问ActiveMQ需要使用stomp.py,见其。

下载官网的代码,解压,命令行进入其目录,使用pyhthon setup.py install即可安装好,然后就可以使用stomp.py了。

 

官方示例代码:给队列test发送一个消息,也可以把第7行的destination的“/queue/”去掉,只剩test。

1 import stomp2 3 conn = stomp.Connection()4 conn.set_listener('', MyListener())5 conn.start()6 conn.connect('admin', 'password', wait=True)7 conn.send(body=' '.join(sys.argv[1:]), destination='/queue/test')8 conn.disconnect()

测试结果:test队列接收到消息数量增加了

 

stomp.Connection()默认是connect.StompConnection11(协议1.1),还可以可以选择1.0、1.2。

 

在官方代码中,stomp.Connection()的参数为空,实际上可以有很多参数,比如,设置Broker的IP地址和端口,如下:其中的host_and_ports就是设置IP和端口的。

 

IP和端口设置示例:

c = stomp.Connection([('127.0.0.1', 62613)])

 

这里我犯错了,端口我协程了8161(ActiveMQ的Web访问的端口),经查询(百度搜索到stackoverflow.com)才知,STOMP协议用的是61613(ActiveMQ的配置文件中):

 

ActiveMQ官网的四个测试:

发送消息到队列Queue属于 点对点模式,不可以重复消费;

发送消息到主题Topic属于 发布/订阅模式,可以重复消费;

1 # Send a Message to an Apache ActiveMQ Queue  2 import stomp 3   4 conn = stomp.Connection10() 5   6 conn.start() 7   8 conn.connect() 9  10 conn.send('SampleQueue', 'Simples Assim')11  12 conn.disconnect()13 14 # Receive a Message from an Apache ActiveMQ Queue15 import stomp16 import time17  18 class SampleListener(object):19   def on_message(self, headers, msg):20     print(msg)21  22 conn = stomp.Connection10()23  24 conn.set_listener('SampleListener', SampleListener())25  26 conn.start()27  28 conn.connect()29  30 conn.subscribe('SampleQueue')31  32 time.sleep(1) # secs33  34 conn.disconnect()35 36 # Send a Message to an Apache ActiveMQ Topic 37 import stomp38  39 conn = stomp.Connection10()40  41 conn.start()42  43 conn.connect()44  45 conn.send('/topic/SampleTopic', 'Simples Assim')46  47 conn.disconnect()48 49 # Receive a Message from an Apache ActiveMQ Topic (1)50 import stomp51 import time52  53 class SampleListener(object):54   def on_message(self, headers, msg):55     print(msg)56  57 conn = stomp.Connection10()58  59 conn.set_listener('SampleListener', SampleListener())60  61 conn.start()62  63 conn.connect()64  65 conn.subscribe('/topic/SampleTopic')66  67 time.sleep(1) # secs68  69 conn.disconnect()70 71 # Receive a Message from an Apache ActiveMQ Topic (2)72 import stomp73 import time74  75 class SampleListener(object):76   def on_message(self, headers, msg):77     print(msg)78  79 conn = stomp.Connection10()80  81 conn.set_listener('SampleListener', SampleListener())82  83 conn.start()84  85 conn.connect(headers={
'client-id':'SampleClient'})86 87 conn.subscribe(destination='/topic/SampleTopic', headers={
'activemq.subscriptionName':'SampleSubscription'})88 89 time.sleep(1) # secs90 91 conn.disconnect()

 

参考

 

转载于:https://www.cnblogs.com/luo630/p/9188107.html

你可能感兴趣的文章
Java网络编程与NIO详解8:浅析mmap和Direct Buffer
查看>>
Java网络编程与NIO详解10:深度解读Tomcat中的NIO模型
查看>>
Java网络编程与NIO详解11:Tomcat中的Connector源码分析(NIO)
查看>>
深入理解JVM虚拟机1:JVM内存的结构与消失的永久代
查看>>
深入理解JVM虚拟机3:垃圾回收器详解
查看>>
深入理解JVM虚拟机4:Java class介绍与解析实践
查看>>
深入理解JVM虚拟机5:虚拟机字节码执行引擎
查看>>
深入理解JVM虚拟机6:深入理解JVM类加载机制
查看>>
深入了解JVM虚拟机8:Java的编译期优化与运行期优化
查看>>
深入理解JVM虚拟机9:JVM监控工具与诊断实践
查看>>
深入理解JVM虚拟机10:JVM常用参数以及调优实践
查看>>
深入理解JVM虚拟机12:JVM性能管理神器VisualVM介绍与实战
查看>>
深入理解JVM虚拟机13:再谈四种引用及GC实践
查看>>
Spring源码剖析1:Spring概述
查看>>
Spring源码剖析2:初探Spring IOC核心流程
查看>>
Spring源码剖析5:JDK和cglib动态代理原理详解
查看>>
Spring源码剖析6:Spring AOP概述
查看>>
【Linux】进程的理解(二)
查看>>
【C++】STL -- Vector容器的用法
查看>>
【Linux】Linux中的0644 和 0755的权限
查看>>