繁体   English   中英

如何在有限的时间内通过鼠兔消费RabbitMQ消息?

[英]How to consume RabbitMQ messages via pika for some limited time?

pika教程中的所有示例都以客户端调用start_consuming() ,这会启动无限循环。 这些例子对我有用。

但是,我不希望我的客户端永远运行。 相反,我需要我的客户端消耗消息一段时间,例如15分钟,然后停止。

我该如何做到这一点?

您可以使用自己的循环一次使用一条消息,比如说您有一个channelqueue设置。 以下将检查队列是否为空,如果不是,则弹出一条消息。

queue_state = channel.queue_declare(queue, durable=True, passive=True)
queue_empty = queue_state.method.message_count == 0

声明已存在的队列,并设置被动标志允许您查询其状态。 接下来我们处理一条消息:

if not queue_empty:
    method, properties, body = channel.basic_get(queue, no_ack=True)
    callback_func(channel, method, properties, body)

这里callback_func是我们正常的回调。 当您想要以这种方式处理时,请确保不要将回调注册到队列。

# DO NOT
channel.basic_consume(callback_func, queue, no_ack=True)

这将使手动消耗做奇怪的事情。 我已经看到如果我事先做过这个调用,queue_declare代码实际上会处理一条消息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM