gpt4 book ai didi

php - RabbitMQ 等待多个队列完成

转载 作者:可可西里 更新时间:2023-10-31 22:12:24 28 4
gpt4 key购买 nike

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

    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 的所有任务完成后,运行消息 ID 1234 的 Q4。

我该如何实现?

使用 Symfony2、RabbitMQBundle 和 RabbitMQ 3.x

资源:

更新 #1

好的,我想这就是我要找的:

具有并行处理的 RPC,但如何将关联 ID 设置为我的唯一 ID 以对消息进行分组并识别哪个队列?

最佳答案

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

来自 bundle 的正常消费者回调将获得 AMQPMessage。从那里您可以访问该 channel 并手动发布到您的“管道和过滤器”实现中接下来出现的任何交易所

关于php - RabbitMQ 等待多个队列完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13861459/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com