「队列」- 概念及术语

  CREATED BY JENKINSBOT

RabbitMQ and ActiveMQ
RabbitMQ and ActiveMQ running on the same machine
这两个还不能在同一台机器上运行,因为他们都使用5672作为broker的端口。

任务队列 与 消息队列

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

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

但是用法也不一样,里面有 Broker、Worker、Client 等等概念,还分布式。

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

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

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

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

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