是否可以仅从activemq接收大量消息。
假设我需要从队列中只收到100条消息,是否可能。
我正在使用消息监听器方法,是否有其他方法来接收消息。
示例代码段:
queue_messages = []
class SampleListener(object):
def on_message(self, headers, msg):
queue_messages.append(msg)
def read_messages():
queue_connection = stomp.Connection([(activemq_host, int(activemq_port))])
queue_connection.start()
queue_connection.connect('admin', 'admin')
queue_connection.set_listener('SampleListener', SampleListener())
queue_connection.subscribe(destination=activemq_input_q, id=1, ack='auto')
time.sleep(1)
queue_connection.disconnect()
read_messages()
答案 0 :(得分:0)
为什么不分享您的问题而不是您心中的解决方案?机会是问题可能不是你想的问题,或者可以有更好的解决方案。
要回答你的问题,是的,你可以。对于ActiveMQ案例,您可以在订阅队列时添加额外的标题,例如{' activemq.prefetchSize':100},并设置ack ='客户端'但是你根本不承认这些消息。结果是你不会收到超过100的消息。
我必须说这是一个尴尬的解决方案。您的代码最终会消耗队列中的前100条消息。您显然可以断开连接并重新订阅同一个队列,以接收下100条消息。
答案 1 :(得分:0)
当ack ='client'并且我不确认on_message事件上的消息时,实际上将确认发送到服务器时,它将在成功断开连接时发送确认。
此外,如果我突然杀死了脚本,仍会发送确认邮件,并且我会错过消息