我正在尝试浏览AMQP队列以检索其最早的消息。
这基本上是用于“监视”功能以在队列中的消息太旧时触发事件。 Afaik,第一个消息是最早的消息,所以我这样写:
from __future__ import print_function
from proton.reactor import Container, Copy
from proton.handlers import MessagingHandler
class Recv(MessagingHandler):
def __init__(self):
super(Recv, self).__init__()
self.received=0
def on_start(self, event):
conn = event.container.connect("localhost:5672")
event.container.create_receiver(conn, "examples", options=Copy())
def on_message(self, event):
print(event.message.creation_time)
self.received += 1
if self.received >= 1:
event.receiver.close()
event.connection.close()
try:
Container(Recv()).run()
except KeyboardInterrupt: pass
它创建了一个接收器,该接收器在处理完第一条消息后退出,这确实是最早的一条消息。
问题是,如果队列为空,则(正确)停留在等待消息上。 我尝试查看QPID Proton广告文档,但无法理解如何重写代码。