我试图找到一种方法来按照发送者发送消息的顺序处理消息,因为 NServiceBus 不保证消息将按特定顺序处理。
发送者是一个发布 createOrder 和 reviseOrder 命令的订单系统。发件人允许用户向同一订单提交多个修订,因此队列中可以同时存在修订 4 和修订 3。每个修订版都有一个修订版号和与之关联的原因代码,它驱动一些业务逻辑,因此我们不能忽略任何修订版或至少它的原因部分。
下面列出了我的一些想法 -
将修订号与目标记录一起存储。发件人在每个修订消息中发送他们的修订号。处理程序比较发送者和目标修订号,如果它们匹配,则更新记录,否则将消息放在队列的末尾。使用这种方法,如果版本 2 消息失败并进入错误队列,则版本 3 将永远不会被处理。
发件人在每条修订消息上发送所有修订的所有原因代码的历史记录。因此,如果修订 2 消息失败,修订 3 消息将包含所有原因代码。这些原因代码将记录在目标中,但可能不会出现与先前修订原因代码相关的任何业务逻辑。
我们如何针对这种情况进行设计?
还有关于如何处理失败的修订消息的任何想法?
一些指导真的很感激。
谢谢。