2017-05-11 107 views
0
  • 嗨,我使用stomp.py模塊來發送和接收來自
    使用python的消息。
  • 雖然接收消息偵聽器將讀取 指定的睡眠時間內的多個消息。
  • 但我只需要閱讀一條消息。這是可能的在Java中。如何使用STOMP從ActiveMQ讀取單個消息?

下面是我測試的聽者腳本,使用python從ActiveMQ隊列接收單條消息STOMP

import stomp 
import time 

class SampleListener(object): 
    def on_message(self, headers, msg): 
    print(msg) 

conn = stomp.Connection([('localhost',61613)]) 
conn.set_listener('SampleListener', SampleListener()) 
conn.start() 
conn.connect() 
conn.subscribe(destination='queue_name', id=1, ack='auto') 
time.sleep(10) # secs 
conn.disconnect() 

回答

1

如果你只是想在與STOMP一次讀取一個消息,這樣做的唯一方法是使用一個ACK模式,例如客戶端或客戶端個人,以便客戶端只有在它發送了明確的ACK時才發送新消息。這也需要將預取值設置爲1,以便代理不會向客戶端發送一批消息。

STOMP確認模式在規範here中定義。經紀商的STOMP支持文件是here。客戶端使用ActiveMQ文檔中列出的SUBSCRIBE上的標頭「activemq.prefetchSize」設置預取。

相關問題