「任务队列」与「消息队列」的不同之处

  CREATED BY JENKINSBOT

第一此听说Celery的时候,我一直以为它和RabbitMQ是类似的东西。

可这用法也不一样啊,什么Broker、Worker、Client啊,然后,就越看越糊涂,还分布式。

后来才发现,是我没有弄明白「任务队列」和「消息队列」这二者之间的区别。

是这个样子的……

「RabbitMQ」是一个消息队列。它接收消息并传递消息。

「Celery」是一个任务队列。它接收任务及其相关数据,运行它们并传递结果。「Celery」是一个队列“包装器”或者“框架”,它隐藏了必须管理底层AMQP机制/架构的复杂性,这些机制/架构直接与RabbitMQ一起运行。

所以才会说,「Celery」是一个任务队列,而「RabbitMQ」是一个消息队列。

「任务队列」包含「生产者」、「消费者」、「消息存储介质」及「其内部逻辑」。「消息存储介质」是由消息中间件服务提供,这个中间件就是「消息队列」。

参考文献

任务队列,消息队列和rpc的区别是什么?
Message Queue vs Task Queue difference
任务队列与消息队列的区别