我们使用RabbitMQ作为消息队列,使用Celery作为任务队列,并且我试图将我的头包裹在队列中。
有人可能会解释任务队列和消息队列之间的操作差异吗?
到目前为止,我得到的消息队列将用于实际的数据,如文本消息或日志片段。 它被放置在消息队列中,所以工作人员可以收集它并对其进行处理,parsing,存储等。
任务队列部分混淆了我,不知道为什么,什么时候或将会做什么?
我认为工作人员(AKA任务?)会不断地轮询消息队列中的事情,所以为什么会有一个任务队列呢?
不完全,但接近。 RabbitMQ中的任务队列更类似于任务调度程序,如cron或Windows Task Scheduler 。
工作队列(又名:任务队列)背后的主要思想是避免立即执行资源密集型任务,必须等待完成。 相反,我们安排稍后完成任务。 我们把一个任务封装成一个消息并发送给队列。 在后台运行的工作进程将popup任务并最终执行作业。 当你运行许多工人时,任务将在他们之间共享。
RabbitMQ是一个消息中介,因此是术语。 所以在function上,实际上没有太大的区别。 一个是消息,另一个是任务/工作。 唯一真正的区别是消息通常是要尽可能快地被处理(并因此被排除在队列之外),而任务通常被安排在特定的时间,因此保持“排队”一段时间。 不过,在系统pipe理的情况下,你可能不得不担心太多了。