python stomp接收来自activemq的消息数

时间:2018-02-09 07:23:43

标签: python activemq stomp

是否可以仅从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()

2 个答案:

答案 0 :(得分:0)

为什么不分享您的问题而不是您心中的解决方案?机会是问题可能不是你想的问题,或者可以有更好的解决方案。

要回答你的问题,是的,你可以。对于ActiveMQ案例,您可以在订阅队列时添加额外的标题,例如{' activemq.prefetchSize':100},并设置ack ='客户端'但是你根本不承认这些消息。结果是你不会收到超过100的消息。

我必须说这是一个尴尬的解决方案。您的代码最终会消耗队列中的前100条消息。您显然可以断开连接并重新订阅同一个队列,以接收下100条消息。

答案 1 :(得分:0)

当ack ='client'并且我不确认on_message事件上的消息时,实际上将确认发送到服务器时,它将在成功断开连接时发送确认。

此外,如果我突然杀死了脚本,仍会发送确认邮件,并且我会错过消息