2017-05-11 12 views
0
  • こんにちはを使用してActiveMQのキューから単一のメッセージを受信し、私のpythonを使用して
    ActiveMQのからメッセージを送信および受信するstomp.pyモジュールを使用しています。
  • メッセージリスナーを受信すると、指定されたスリープ時間の 内の複数のメッセージが読み取られます。
  • しかし、私は1つのメッセージだけを読む必要があります。 javaで可能です。どのように 私はSTOMPを使用してActiveMQから単一のメッセージを読むことができますか?

ここでは、あなただけSTOMPで一度に一つのメッセージを読みたい場合はそれを行うための唯一の方法は、このようなACKモードを使用することです私は、はPythonの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

をテストしていたリスナースクリプトですクライアントまたはクライアント個人が、それが持っているものに対して明示的なACKを送信したときにのみ新しいメッセージが送信されるようにします。また、ブローカがクライアントに一式のメッセージを送信しないように、プリフェッチ値を1に設定する必要があります。

STOMP確認モードは、hereの仕様で定義されています。ブローカーのSTOMPサポートのドキュメントはhereです。クライアントは、ActiveMQのドキュメントに記載されているSUBSCRIBEヘッダー「activemq.prefetchSize」を使用してプリフェッチを設定します。

関連する問題