0

我创建消息组(例如 G1、G2、...)。

在每个组内,所有消息都可以并行处理,顺序无关紧要。

但是,要处理 G2,来自 G1 的所有消息必须已完成处理。

是否有可能在rabbitmq中实现这一点?(最后我将在 symfony 中实现它......)

我的问题与具有“消息屏障”功能的消息队列有关?

4

2 回答 2

0

队列不适合这种情况。使用像Cadence Workflow这样的编排器,它可以开箱即用地支持您的场景。它还允许实施复杂的错误处理和重试策略。

于 2019-09-24T02:52:52.743 回答
0

RabbitMQ 支持优先级队列,当使用它们时,具有较高优先级的消息应该在具有较低优先级的消息之前发送给消费者(一些警告适用)。

发送消息时,您可以使用AmqpStamp.

$bus->dispatch($message, [new AmqpStamp($routingKey, $flags, ['priority' => 10])]);
于 2020-10-23T03:03:28.377 回答