对于我的情况,我有一些要求来按顺序处理消息,但并不完全。我知道订购邮件很不好,所以我会解释。
有一个生产者按时间间隔发布一条消息。此消息包含要执行的作业列表。该消息引发了一个传奇,该消息按其“重量”对这些作业进行排序,并为消费者准备了一批其他消息(如果重要的话,这些消息也属于sagas)。有多个消费者。
我现在需要的是按最初的传奇准备处理这些作业。但是我不希望其他消费者停滞不前。
我在说什么的例子。
想象一批工作:“ 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”永远不会得到处理,但这对我来说不是问题。
P.S。使用RabbitMQ。