RabbitMQ中的任务队列和消息队列有什么区别?

Wer*_*ner 7 middleware rabbitmq

我们使用 RabbitMQ 作为消息队列,使用 Celery 作为任务队列,我正在尝试围绕队列进行处理。

有人可以向我解释任务队列和消息队列之间的操作差异吗?

到目前为止,我知道消息队列将用于实际数据,如文本消息或日志片段。它被放置在消息队列中,以便工作人员可以收集它并对其进行处理,例如解析、存储等。

任务队列部分让我感到困惑,不知道为什么、何时或会做什么?

我认为工作人员(AKA 任务?)会不断轮询消息队列以获取要做的事情,那么为什么会有任务队列呢?

Hop*_*00b 5

不完全,但接近。 RabbitMQ 中的任务队列更类似于任务调度程序,如 cron 或 Windows 任务调度程序

工作队列(又名:任务队列)背后的主要思想是避免立即执行资源密集型任务而不得不等待它完成。相反,我们安排任务稍后完成。我们将一个任务封装成一条消息并发送到队列中。在后台运行的工作进程将弹出任务并最终执行作业。当您运行许多工人时,任务将在他们之间共享。

RabbitMQ 是一个消息代理,因此得名。所以在操作上,功能上,真的没有太大区别。一个用于消息,另一个用于任务/作业。唯一真正的区别是消息通常旨在尽快处理(因此从队列中清除),而任务通常被安排在特定时间,因此会保持“排队”一段时间。不过,在系统管理的上下文中,这可能不是您不必担心太多的区别。