如何在Python中读取stomp队列中的所有消息?
我写了这样的代码,但它只读取一条消息并且存在 - 如何强制读取所有消息 .
# coding=utf-8
import stomp
import logging
from medptr.farm.farm import FarmSettings
import platform
import os
if __name__ == '__main__':
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
class ConnectionListener(stomp.ConnectionListener):
def __init__(self, connection):
self.connection = connection
" Current connection. "
def on_error(self, headers, body):
logger = logging.getLogger(__name__)
logger.error('Stomp connection error headers = %s and body = %s.' % (headers, body))
def on_message(self, headers, message):
logger = logging.getLogger(__name__)
logger.debug('Stomp new message headers = %s and body = %s.' % (headers, message))
farm = FarmSettings.get_by_hostname()
conn = stomp.Connection12(host_and_ports=farm.active_mq_settings.hosts_and_ports)
conn.set_listener('message', ConnectionListener(conn))
conn.set_listener('print', stomp.PrintingListener())
conn.set_listener('stats', stomp.StatsListener())
conn.start()
conn.connect(username=farm.active_mq_settings.username, passcode=farm.active_mq_settings.passcode, wait=True)
subscribe_id = '-'.join(map(str, (platform.node(), os.getppid(), os.getpid())))
# conn.set_listener('stats', stomp.StatsListener())
# conn.set_listener('print', stomp.PrintingListener())
conn.send('queue/test', 'hello')
conn.subscribe(destination='queue/test', id=subscribe_id, ack='client-individual')
conn.unsubscribe(id=subscribe_id)
conn.disconnect()
conn.stop()
1 回答
您可以使用Stomp库中的TestListner: