gpt4 book ai didi

python - RabbitMQ:清除队列

转载 作者:行者123 更新时间:2023-11-28 17:52:03 27 4
gpt4 key购买 nike

我有一些队列,例如:

online_queue = self._channel.queue_declare(
durable = True,
queue = 'online'
)

目前,我需要刷新此队列中的所有内容。但是,此时,另一个进程可能会发布到该队列。如果我使用 channel.queue_purge(queue='online'),当 queue_purge 仍在工作时,发布的消息会发生什么情况?

最佳答案

根据您的最终目标,您可能可以通过使用临时队列来解决这个问题。

为了让事情更清楚,让我们给事情起个名字。将您当前的队列(您要清除的队列)称为队列 A,并假设它是 1-1 绑定(bind)到 Exchange A。

如果您创建一个新队列(队列 B)并以与队列 A 绑定(bind)相同的方式将其绑定(bind)到 Exchange A,队列 B 现在将获取队列 A 获取的所有消息(从绑定(bind)时开始)。

您现在可以安全地清除队列 A,而不会丢失绑定(bind)队列 B 后发送的任何消息。

将队列 A 重新绑定(bind)到 Exchange A,您将恢复正常运行。

然后您可以根据需要处理队列 B 中的“临时”消息。

这样做的好处是具有非常明确的行为并且不会让您陷入任何竞争条件,因为您可以完全清除队列 A 并重新创建它而不是清除。

关于python - RabbitMQ:清除队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8270841/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com