最近用到了這個,記錄一下。
python通過stomp協議與ActiveMQ通信。
首先要確認下ActiveMQ是否開啟了stomp服務(默認是開啟的):
端口號默認為:61613
發送與接收消息:
1 class MyListener(object): 2 3 def __init__(self, conn): 4 self.conn = conn 5 6 def on_error(self, headers, message): 7 print '$$$ received an error: %s from MQ' % message 8 9 def on_message(self, headers, message): 10 print '$$$ received a message: %s from MQ' % message 11 # print headers 12 self.conn.ack(id=headers['message-id'], subscription=headers['subscription']) # 消費消息記錄 13 14 prepare_folder() 15 self.write_record(config_file, message) 16 17 def messagequeue_invoker(): 18 dest = '/queue/TestPysoider' 19 #logging.basicConfig() 20 21 conn = stomp.Connection([('127.0.0.1', 61613)]) 22 conn.set_listener('', MyListener(conn)) # 注冊消息監聽者 23 conn.start() 24 conn.connect(username='admin', passcode='admin', wait=True, headers={'tcpNoDelay': 'true'}) 25 conn.send(destination=dest, body='I am a test message.', headers={'type': 'textMessage'}) # 發送消息 26 print "$$$ send one message" 27 28 conn.subscribe(destination=dest, id=123, ack='client') # 開始監聽接收消息 29 print 'start to receive message......' 30 while True: 31 try: 32 time.sleep(1) 33 except: 34 break
由於python各種庫的版本變化較快,調用參數與方式可能有變化。之前在網上找資料就發現好多有不能執行。
可以通過查看源代碼以及注釋的方法校准方法調用方式(參數列表);
通過打印傳入參數查看監聽方法的使用以及消費消息記錄的調用方式。
技巧很弱,僅作總結。
歡迎大神指教。