芹菜为什么需要消息代理?

Sha*_*dra 5 job-queue rabbitmq celery

由于芹菜是一个工作队列/任务队列,名称说明它可以维护其任务并对其进行处理。那么为什么它需要像rabbitmq或redis这样的消息代理?

sha*_*haf 6

Celery是分布式任务队列,这意味着系统可以跨多个位置的多台计算机驻留

基本架构如下:

worker-可以从总线上获取作业(任务队列)并处理数据的进程,可以将结果放入总线中,以供其他工人进行进一步处理

bus-任务队列,这是一个简单的数据库,用于将作业存储为消息,因此工作人员可以检索它们,实现并发且无阻塞的db非常重要,因此,当一个进程从总线上/从总线上放置或放置作业时,它不会不会阻止其他工人从事/从事自己的工作,redis并且activemq是此类行为的最佳人选

作为api的bas,因此您可以将作业提交给总线,以供工人在其上工作,其中 Celery包括一个scheduler节拍)功能,该功能定期将特定作业放在总线上,从而创建一个定期任务

让我们以一个剪贴示例为例,您想剪贴整个世界,但是中国只能允许来自该地区的流量,欧洲和美国也是如此,因此您可以建立一个工作人员并将其安置在亚马逊的计算中心中

因此,您只能使用一辆公共汽车(假设它位于美国),所有其他工人都知道这辆公共汽车并且可以连接到它,因此,通过在位于美国的公共汽车上放置特定的工作(废弃中国),这在中国是一个过程可以在上面工作,因此可以分发

我建议阅读正式文档,这很简单

  • 我有一个问题,我不明白rabbitmq队列和celery队列有什么区别,它们是相同的东西还是不同?Tnx 汤姆 (4认同)
  • @TomislavMikulin 是和否,celery 管理一个作业队列,该队列的实现取决于代理类型,它可能使用rabbitmq 队列或 redis 列表实现它,甚至其他一些数据结构取决于代理和它的 api (2认同)
  • 总线是兔子(队列),芹菜公开一个透明的api,即添加到队列,从队列中取出等等 (2认同)