消息队列与任务队列的区别

2023-12-19

我想知道它们之间有什么区别。他们描述的是同一件事吗?

是 Google App Engine 服务任务队列 https://developers.google.com/appengine/docs/java/taskqueue/overview是消息队列的实现吗?


我在 Facebook 上的一些开发者社区群组中问了类似的问题。这与 GoogleAppEngine 无关——我更广泛地要求确定 RabbitMQ 和 Celery 之间的用例。以下是我收到的回复,我认为这些回复与该主题相关,并且相当清晰地阐明了消息队列和任务队列之间的区别。

I asked:

说“芹菜是 QueueWrapper/QueueFramework 消除了拥有的复杂性 管理内部队列管理/队列管理活动 ETC”?

我理解书中的语言“Celery 是一个任务队列”并且 “RabbitMQ 是一个消息代理”。不过,似乎有点混乱 作为第一次 celery 用户,因为我们一直都知道 RabbitMQ 成为“队列”。

请帮助解释 celery 与rabbitMQ 相比如何/做什么

我从阿布·阿什拉夫·马斯努

任务队列和消息队列。 RabbitMQ 是一个“MQ”。它接收消息 并传递消息。

Celery 是一个任务队列。它接收任务及其相关数据, 运行它们并提供结果。

让我们暂时忘记芹菜。我们来谈谈RabbitMQ。什么 我们通常会做什么?我们的 Django/Flask 应用程序会向 队列。我们将有一些工作人员正在运行,等待新的工作人员 某些队列中的消息。当新消息到达时,它开始 工作并处理任务。

Celery 完美地管理了整个过程。我们不再需要 了解或担心 AMQP 或 RabbitMQ 的细节。我们可以使用Redis 甚至数据库(例如 MySQL)作为消息代理。芹菜 允许我们用我们的工人代码定义“任务”。当我们需要做的时候 后台(甚至前台)中的某些内容,我们可以调用 该任务(用于立即执行)或安排该任务延迟执行 加工。 Celery 将处理消息传递并运行 任务。它将启动知道如何运行你的工作人员 定义任务并存储结果。这样以后就可以查询任务了 需要时结果甚至任务进度。

你也可以使用 Celery 作为 cron 作业的替代品(尽管我不这样做) 真喜欢它)!

我从胡安·弗朗西斯科·卡尔德隆·尊巴

我的理解是芹菜只是一个非常高水平的 抽象来实现事件的生产者/消费者。它需要 列出一些你需要做的痛苦的事情,例如与 兔子MQ。 Celery 本身不是队列。事件队列被存储 在您选择的系统中,celery 可以帮助您处理此类问题 事件而无需从头开始编写生产者/消费者。

最终,这是我带回家的最终收获:

Celery 是一个队列包装器/框架,它消除了以下复杂性 必须管理底层的 AMQP 机制/架构 直接操作RabbitMQ

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

消息队列与任务队列的区别 的相关文章

随机推荐

  • 自定义 Android TabHost 慢片段

    我使用 ActionbarSherlock 和 SlidingMenu 我的 MainActivity 不访问数据库 也不解析任何内容 一切都是静态的 根据您从滑动菜单中选择的 部分 动态生成选项卡 单击 2 次后 应用程序变得非常慢 下面
  • 检查android应用程序是否在前台? [复制]

    这个问题在这里已经有答案了 我针对这个问题找到了很多答案 但这都是关于单个活动的 如何检查整个应用程序是否在前台运行 我不明白你想要什么 但你可以检测当前的前台 后台应用程序ActivityManager getRunningAppProc
  • 表溢出到 div 之外

    我试图阻止一个已明确声明宽度的表在其父级之外溢出div 我想我可以使用某种方式做到这一点max width 但我似乎无法让它工作 以下代码 窗口非常小 将导致这种情况 div div
  • 我什么时候应该在响应标头中真正将“Access-Control-Allow-Credentials”设置为“true”?

    MDN https developer mozilla org en US docs Web HTTP Headers Access Control Allow Credentials表示 当必须在站点之间交换 cookie 授权标头或 T
  • 在 Excel 中将 HEX 转换为 RGB

    我有一列 HEX 和三列 R G 和 B 如何将 HEX 转换为 RGB 例如ff0000 to R 255 G 0 and B 0 我知道前 2 个字符ff属于 R 接下来的200属于 G 最后的200属于 B 所以我必须使用 LEFT
  • Excel:将数组传递给用户定义函数 (VBA)

    编辑 解决方案 请参阅下面的原始问题 在将 1 2 3 这样的数组传递给 UDF 时 我发现需要考虑两件事 区域设置 请参阅答案 1 德国系统上的列表分隔符 通常 是 因此我需要使用 1 2 3 传递的数组在函数中显示为二维数组 因此 它的
  • Objective-C 类中的 Swift 协议

    I wrote SearcherProtocol在 Swift 中并且需要实现一个 Objective C 类FileSearcher必须使用这个协议 所以我尝试了这个 import
  • C++ 警告:“指针参数“arr”可以是指向 const 的指针”

    我有下面三个函数 我不确定为什么第二个和第三个函数在 arr 处有警告 但第一个函数没有 该警告是什么意思以及如何解决这个问题 IDE 克利翁2017 3 MinGW64 5 0 CMake 3 9 4 谢谢 int getFirstEve
  • Python:psycopg2.ProgrammingError:INSERT 的表达式多于目标列

    我是 python 新手 我似乎不明白为什么会出现这个错误 它告诉我参数太多 但表有 8 列 我向 它传递了 8 个参数 到底是怎么回事 这个错误是否会产生误导 真正的问题是我试图传递的值可能是None或者可以是类型Boolean usin
  • Swift 反射功能 - 如何获取实例变量名称?

    给定一个构造函数 例如 required init pTableName String pRecordKey String pStartAtRecord Int parameters append ChildElement identifi
  • 隐藏Referer(PHP、HTML、JS 无关紧要)

    我正在使用这样的东西 mysite com out php url outurl com 我只是使用一个简单的重定向 但我只是想知道如何隐藏引荐来源网址 Thanks 编辑 我最终进行了两次元刷新 引荐来源网址是由用户的浏览器附加的 而不是
  • 在应用程序购买 SKPaymentQueue finishTransaction 不起作用

    我正在 iOS sdk 中工作应用程序内购买项目 我已经准备好了应用程序内购买类 用于从应用程序商店购买应用程序 并启用项目的内部内容 但是 我的问题是 SKPaymentQueue 没有完成我的类的工作 这是我的应用程序内购买的代码班级
  • Spring Data中的多态查询

    我有一个基本抽象类 Entity Table name P FLD Inheritance strategy InheritanceType JOINED DiscriminatorColumn name FLD DISCRIMINATOR
  • 当应用程序被销毁时 PreferenceActivity 保存首选项

    我有一个 MainActivity 和一个从该 Activity 调用的 PreferenceActivity 我还运行了一个服务来查询这些首选项 当我打印这些值时 我明白了 D pref scrobble 4083 true D pref
  • Git 挂钩,通过提交进行接收后循环

    在服务器端使用 git hooks 是否可以在每次有人推送到远程存储库时循环从客户端发送到服务器的新提交消息 我需要从每条消息中提取信息 哈希 日期 提交作者 分支 我找不到任何关于 git hooks 的好的文档来解决这个问题 我已读完g
  • 保存和读取登录到钥匙串不工作 IOS swift

    Hello I have a log in view that uses face recognition to authenticate the user and If the user is authenticated it reads
  • 矢量图块缓冲区

    我在使用 Geoserver 提供的矢量切片设置 Openlayers 地图时遇到问题 线条沿着瓷砖的边缘拧在一起 看起来线条是先被剪裁 然后再设计样式 而不是相反 这使得宽线看起来很难看 更改 LOL 客户端中的渲染缓冲区不会产生任何影响
  • pandas dataframe groupby:仅正数的总和/计数

    我有一个数据框 框架 我想按国家和日期进行聚合 aggregated pd DataFrame frame groupby Country Date CaseID count aggregated Total duration frame
  • Git 子模块跟踪提交但知道分支?

    我正在一个项目中工作 我们使用 git 子模块来跟踪整个代码 一起发布的几个不同部分 所以我喜欢子模块跟踪特定提交的想法 因为子模块主要用于历史目的 这很好 这样将来人们就可以检查超级存储库的特定标签并找出每个组件的代码所在的位置 但是 如
  • 消息队列与任务队列的区别

    我想知道它们之间有什么区别 他们描述的是同一件事吗 是 Google App Engine 服务任务队列 https developers google com appengine docs java taskqueue overview是