首页 > 解决方案 > Masstransit 中的有序消息

问题描述

在我的情况下,我有一些要求按顺序处理消息,但不完全是。我知道订购消息很糟糕,所以我会解释一下。

有一位生产者以定时间隔发布一条消息。此消息包含要执行的作业列表。该消息启动了一个 saga,它根据这些作业的“权重”对这些作业进行排序,并为消费者准备一批其他消息(如果重要的话,它们也是 saga)。有多个消费者。

我现在需要的是按初始传奇准备的顺序处理这些工作。但我不希望其他消费者停滞不前。

我正在谈论的一个例子。

成像一批作业:“1, 2, 3, 4, 5, 6, 7, 8”

如果每个队列限制为 4 个消费者,我希望立即使用作业“1、2、3、4”。当任何工作完成时,我希望使用下一个工作(在本例中为 #5)。然后#6等等。

如果在队列中只剩下“6、7、8”时准备好另一批,我希望它以相同的方式排序。因此,如果作业“1、2、9、10”到达,那么结果队列应该变为“1、2、6、7、8、9、10 即始终按“重量”排序并按此顺序消耗,所以下一个工作必须再次是“1”,然后是“2”,依此类推。

这个方案是否可能以某种方式使用 Masstransit?我知道工作“10”有可能永远不会得到处理,但这对我来说不是问题。

PS 使用 RabbitMQ。

标签: c#rabbitmqmasstransit

解决方案


推荐阅读