RabbitMQ 等待多个队列完成

2024-01-12

好的,这里是正在发生的事情的概述:

    M <-- Message with unique id of 1234
    |
    +-Start Queue
    |
    |
    | <-- Exchange
   /|\
  / | \
 /  |  \ <-- bind to multiple queues
Q1  Q2  Q3
\   |   / <-- start of the problem is here
 \  |  / 
  \ | /
   \|/
    |
    Q4 <-- Queues 1,2 and 3 must finish first before Queue 4 can start
    |
    C <-- Consumer 

所以我有一个推送到多个队列的交换器,每个队列都有一个任务,一旦所有任务完成,只有队列4才能启动。

因此,具有唯一 id 1234 的消息被发送到交换器,交换器将其路由到所有任务队列(Q1、Q2、Q3 等...),当消息 id 1234 的所有任务都已完成时,运行 Q4 来获取消息编号 1234。

我怎样才能实现这个?

使用 Symfony2、RabbitMQBundle 和 RabbitMQ 3.x

资源:

  • http://www.rabbitmq.com/tutorials/amqp-concepts.html http://www.rabbitmq.com/tutorials/amqp-concepts.html
  • http://www.rabbitmq.com/tutorials/tutorial-6-python.html http://www.rabbitmq.com/tutorials/tutorial-six-python.html

更新#1

好吧,我想这就是我正在寻找的:

  • https://github.com/videlalvaro/Thumper/tree/master/examples/parallel_processing https://github.com/videlalvaro/Thumper/tree/master/examples/parallel_processing

具有并行处理功能的 RPC,但是如何将 Correlation Id 设置为我的唯一 ID 来对消息进行分组并识别哪个队列?


你需要实现这个:http://www.eaipatterns.com/Aggregator.html http://www.eaipatterns.com/Aggregator.html但是 Symfony 的 RabbitMQBundle 不支持这一点,因此您必须使用底层的 php-amqplib。

来自捆绑包的普通消费者回调将获得 AMQPMessage。从那里您可以访问通道并手动发布到“管道和过滤器”实施中接下来出现的任何交换

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

RabbitMQ 等待多个队列完成 的相关文章

  • 无法使用mailer类在php中发送邮件

    今天我在php中做了一些邮件处理 我发现有两种方法 一种是Php提供的简单邮件功能 另一种是我在互联网上找到的关于使用网站上的PHP邮件程序类https github com PHPMailer PHPMailer https github
  • PHP保存图像文件[重复]

    这个问题在这里已经有答案了 可能的重复 从 PHP URL 保存图像 https stackoverflow com questions 724391 saving image from php url using php 我有一个图像作为
  • LinkedIn OAuth 缺少必需参数“client_id”

    我正在使用 LinkedIn API 并尝试发出请求 但是当我尝试获取 accesstoken 时 我在 json 打印中收到以下错误 Array error gt missing parameter error description g
  • 在 Windows 上使用 PHP 进行分叉/线程的最佳方法是什么?

    我有一个 php 脚本 用于检查许多 数千个 网站上的更新 有时 随着站点数量的增加 情况会更频繁 我在更新其中一个站点时会遇到执行超时 整个脚本都会付诸东流 我能想到的最好的想法是分叉每个更新 所以如果它死了 整体更新就会继续 从我收集到
  • 将 Dwolla 与 PHP 及其 API 集成

    前言 好吧 我过去使用过 API 例如 TwitterAPI 但我总是使用库和一些文档来帮助我进行连接和检索令牌 我对 API 的工作原理有了基本的了解 好的 我尝试了多种使用 PHP 请求 dwolla API 的方法 我尝试过制作一个
  • RabbitMQ Java 客户端自动重新连接

    当我的应用程序失去与 RabbitMQ 的连接时 我将其连接工厂设置为自动尝试并重新连接 ConnectionFactory factory new ConnectionFactory factory setUsername usernam
  • jquery 切换在移动设备上不起作用

    所以我正在尝试做到这一点 因此当您单击此网站的移动响应版本上的菜单时http dev trafficdigitalagency com stage http dev trafficdigitalagency com stage 它切换显示内
  • 如何防止在以 .php 结尾的 URL 后添加其他字符串?

    我们网站的团队刚刚发现 任何用户都可以在以 php 扩展名结尾的 URL 后面添加斜杠 然后添加任何字符串 并且仍然可以访问相同的原始页面 例如 我可以通过以下方式访问 www mydomain com index php www mydo
  • PHP:正则表达式删除`a`或`–?

    我使用这个正则表达式从字符串输入中删除所有标点符号 pg url preg replace W pg url 但有些符号或特殊字符我无法删除它们 例如 当我将其传递到我的数据库注入时 它会变成 or 我怎样才能摆脱这些奇怪的东西 Thank
  • 无法使用php连接到远程数据库

    我在 Windows 中安装了 Xampp 并且正在使用 Laravel 5 3 创建一个应用程序 我正在尝试在本地网络上的另一台服务器上执行查询 但是当我尝试这样做时 MySql 服务器使用以下命令对本地服务器上的用户进行身份验证 use
  • 按列对 3d 数组中的行数据进行分组,并合并每组中的子数组数据

    我有一个下面提到的数组 array array 0 gt array names gt array 0 gt Apple group gt 1 1 gt array names gt array 0 gt Mango group gt 1
  • PHP、MySQL、PDO 事务 - fetchAll() 可以在 commit() 之前吗?

    更多交易问题 我现在拥有的是一堆串在一起的查询 如果有任何失败 都会手动反转 代码块1 stmt1 db gt prepare Update table1 set col col 1 if stmt1 db gt execute stmt2
  • 使用 PHP 调用涉及枚举的 Web 服务 (SOAP)

    我希望使用 SOAP 从 PHP 调用 Web 服务 使用包含的 SOAP 扩展 有问题的网络服务是http www webservicex net CurrencyConvertor asmx http www webservicex n
  • 如何使用 jenssegers/laravel-mongodb 包获取文档集合中的最大和最小日期?

    我有一组如下所示的文档 id ObjectId 5826182e2e94e0aefc541924 calls call date 2016 08 16 00 00 00 000 updated at ISODate 2016 11 11T1
  • 如何在 .net 中为 Google 云存储签名 url

    我想知道如何使用 net中的谷歌云存储类生成signurl 我已经根据要求创建了字符串 GET 1388534400 bucket objectname 但我现在想用 p12 密钥签署这个 url 然后想让它变得 url 友好 该库没有显示
  • 计算链接上的点击次数(不带 onclick)[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有诸如此类的链接 a href h
  • 使用 php 和 jquery 的简单彗星示例

    谁能给我一个使用 PHP 的彗星技术的简单好例子 我只需要一个使用持久 HTTP 连接或类似连接的示例 我不想使用轮询技术 因为我已经设置了类似的东西 并且不仅难以使用和管理它的大量资源 另外我使用的是 IIS7 而不是 Apache 一个
  • PHP is_file 和服务器根相对路径

    请问如何使用 is file 和 folder file jpg 这样的路径 谢谢你 如果路径以 开头 则表示该路径是绝对路径 当路径是相对路径时 即不以 开头 则采用相对于 php 脚本的路径 如果您希望 folder file jpg
  • 在 Laravel 中创建用户表

    我在 laravel 的用户表方面遇到了一些麻烦 我很久以前就已经删除了那些默认表 现在我尝试使用 Auth 但无法注册 因为数据库中没有表 但我也无法创建表php artisan migrate 因为我已经删除了那些迁移表 所以我想再次创
  • 使用php获取多个复选框名称/id

    如何使用 PHP 获取提交时多个选定复选框的名称或 ID 以下是示例表格 谢谢

随机推荐

  • 如何在node.js中使用CasperJS?

    我想在node js 中使用CasperJS 我参考了以下 URL 在 node js 中使用 CasperJS https github com sgentle phantomjs node https github com sgentl
  • Angular Js:类属性指令中的 onchange 不起作用

    控制指令 js function validVehicleyear scope http return restrict C scope ngModel link function scope element attrs ngModel e
  • 在 Docker 中启动并填充 Postgres 容器

    我有一个包含 Postgres 数据库的 Docker 容器 这是用官方的Postgres 图像 https registry hub docker com postgres 其中有一个 CMD 条目在主线程上启动服务器 我想通过运行来填充
  • xcode 8 错误被服务委托拒绝 (SBMainWorkspace)

    尝试在模拟器上运行构建 我收到此错误 打开 com companyname appname 的请求失败 请求被服务委托 SBMainWorkspace 拒绝 原因 安全 权利 启动需要 com apple frontboard debuga
  • 如何传递通用方法的 lambda 表达式参数以检查 MVC EF 4.0 中的重复项

    我的应用程序中有超过 10 个设置屏幕 在每个数据中 我都必须检查重复数据 例如 这是一个示例代码 private void CheckDuplication AIRLINE airline var AIRLINE context AIRL
  • React Native 不会填满 iPad 上的窗口

    我正在运行的任何 React Native 项目 包括 Facebook 的示例 在 iPad 上看起来都很奇怪 它没有填满屏幕 一切看起来 太大 内容左右各有2个黑条 任何帮助都会很棒 谢谢 解决方案 在 xcode 项目中 转到常规选项
  • 使用javascript获取具有多个下拉菜单的选项的选定值

    我有多个功能 其中有多个选项 在选择某个选项时需要更新这些选项 我还需要通过属性元素传递第三条数据 getElementById 适用于单个下拉菜单 但是当页面上有多个菜单时如何使其工作 我努力了var e document getElem
  • jQuery stop(true, true) 跳转到队列中所有动画的末尾

    我一直在使用 jQuerystop true true 方法清除正在运行的动画 以便下一个立即开始 我注意到第一个参数 clearQueue 清除整个动画队列 但第二个参数 jumpToEnd 仅跳转到当前正在运行的动画的末尾 而不是从队列
  • 如何静音AVPlayer中播放的视频?

    我正在 AVPlayer 中播放视频 现在我需要在播放时单独静音音频 请建议如何在 Objective C 中进行操作 谢谢 苏雷什 从iOS7开始你可以设置AVPlayerisMuted财产给true 在 Objective C 中 该属
  • 在 Entity Framework 4.1 Code First 中排除列可更新

    有谁知道我们是否可以在 Entity Framework 4 1 Code First 中排除列的更新 例如 我有 CreatedOn 字段 我不想在进行编辑 更新时包含该字段 这是否可能 即有选择地从 EF Code First 4 1
  • Java Swing:GUI 未更新某些属性

    编辑 下面是一个最简单 最简单且可检查的问题 RESUME 我正在做一个拉丁方应用程序 它设置一个大小为 s 的正方形 并且您需要使用一些限制来为其着色 例如同一行或同一列中的颜色不同 但我的麻烦不是问题本身 而是Swing 我正在尝试使用
  • 求矩阵中不同行和列的元素总和的最大值

    我有一个 nxm 矩阵 我需要找到不同行和列中其值之和的最大值 例如考虑以下矩阵 m1 m2 m3 n1 1 2 3 n2 4 5 6 n3 7 8 9 n4 10 11 12 最大值为 12 8 4 24 请注意 查找最大值并消除属于该列
  • 检查断言是否启用

    您可以启用 禁用assert on the ClassLoader http docs oracle com cd E19683 01 806 7930 assert 5 index html 但如何确定它们是否已启用 我想采用一些代码路径
  • 避免Python中的对象别名?

    我正在尝试编写一个函数来检查列表是否已排序 返回True or False 如何避免多个变量指向同一事物 def is sorted t a t a sort 当我这样做时 它会对两者进行排序a and t 我怎样才能避免这种情况 这是 O
  • 使用电子构建器的构建后脚本

    在使用电子构建器打包安装程序之前 是否可以在构建后运行某种脚本 我需要生成一个应该分发的额外文件 但我需要二进制文件 exe 来生成它 None
  • 从外部模块添加 argparse 参数

    我正在尝试编写一个可以由第三方扩展的Python程序 该程序将从命令行运行 并提供任何参数 为了允许第三方创建自己的模块 我创建了以下 简化的 基类 class MyBaseClass object def init self self d
  • 哪个正则表达式适用于数字和字符串?

    我正在尝试创建简单的 IDE 并根据以下内容为我的 JTextPane 着色 字符串 注释 和 关键字 公共 int 数字 整数 如 69 浮点数 如 1 5 我为源代码着色的方式是覆盖 StyledDocument 中的 insertSt
  • Spark查询执行时间

    我安装了本地 hadoop 单节点和 hive 并且在 hdfs 中存储了一些 hive 表 然后我使用 MySQL Metastore 配置 Hive 现在我安装了 Spark 并且对 Hive 表进行了一些查询 如下所示 在 scala
  • PHP 7.2 wamp 服务器上的 Magento

    我正在使用 WAMP 服务器 php 版本 7 2 在本地系统上配置现有的 magento 项目 在安装 magento 时出现错误 必须加载 PHP 扩展 mcrypt 问题是 php 7 2 不再支持 mycrypt 有人可以建议我如何
  • RabbitMQ 等待多个队列完成

    好的 这里是正在发生的事情的概述 M lt Message with unique id of 1234 Start Queue lt Exchange lt bind to multiple queues Q1 Q2 Q3 lt star