首先,下载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&wireformat.maxFrameSize=104857600"/>
后添加以下内容:
<transportConnector name="stomp" uri="stomp://localhost:61613?maximumConnections=1000&wireformat.maxFrameSize=104857600"/>
这样ActiveMQ就启用了stomp协议。
简单介绍下stomp,stomp是一种简单、实现容易的协议,因此支持非常广泛,这里采用Stomp协议的主要原因也是因为其支持的客户端开发语言最多,在各种环境下都有用武之地。这些开发语言主要包括:
ActionScript 3
C
C++
.Net
Delphi
Perl
PHP
Python
Ruby
这里我是使用了python来实现jms客户端,用于发送接收消息。
具体代码如下:
发送消息客户端mq_send.py:
import stomp
import time
dest="/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则代表持久化消息
import time
import sys
import stomp
class MyListener(object):
def on_error(self,headers,message):
print 'received an error %s' % message
def on_message(self,headers,message):
print 'received a message %s' % message
dest='/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:
break
conn.disconnect()