python实现jms客户端(发送接收消息)

来源:互联网 发布:mac无法播放网页视频 编辑:程序博客网 时间:2024/06/05 02:22

首先,下载python关于stomp协议的支持包stomppy,下载地址:http://code.google.com/p/stomppy/downloads/list.

下载后解压并进入到其根目录下执行setup.py文件进行安装,安装的命令为python setup.py install.

我使用的消息中间件为apache 的ActiveMQ,需配置ActiveMQ支持stomp协议,配置的方法如下:

进入到activeMQ的配置文件夹conf下找到activemq.xml配置文件,

在<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireformat.maxFrameSize=104857600"/>

后添加以下内容:

<transportConnector name="stomp" uri="stomp://localhost:61613?maximumConnections=1000&amp;wireformat.maxFrameSize=104857600"/>

这样ActiveMQ就启用了stomp协议。

简单介绍下stomp,stomp是一种简单、实现容易的协议,因此支持非常广泛,这里采用Stomp协议的主要原因也是因为其支持的客户端开发语言最多,在各种环境下都有用武之地。这些开发语言主要包括:
 ActionScript 3
 C
 C++
 .Net
 Delphi
 Perl
 PHP
 Python
 Ruby

这里我是使用了python来实现jms客户端,用于发送接收消息。

具体代码如下:

发送消息客户端mq_send.py:

import stompimport timedest="/queue/test"try:conn=stomp.Connection([('127.0.0.1',61613)])print "connection"conn.start()print "start"conn.connect(wait=True)print "connected"conn.send('123456789',destination=dest,headers={'type':'textMessage','persistent':'true'},ack='auto')print "send"time.sleep(2)print "sleep"conn.disconnect()print "disconnect"except Exception ,e:print '===============',e

提示:在消息头部headers添加persistent:true则代表持久化消息


接收消息客户端mq_receiver.py:

import timeimport sysimport stompclass MyListener(object):def on_error(self,headers,message):print 'received an error %s' % messagedef on_message(self,headers,message):print 'received a message %s' % messagedest='/queue/test'conn=stomp.Connection([('127.0.0.1',61613)])conn.set_listener('',MyListener())conn.start()conn.connect(wait=True)conn.subscribe(destination=dest,ack='auto')while True:try:time.sleep(1)except:breakconn.disconnect()


原创粉丝点击