2017-05-11 73 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”设置预取。

相关问题