mad*_*dog 2 .net msmq esb nservicebus servicebus
我正在尝试找到一种方法来按照发件人发送的顺序处理邮件,因为NServiceBus不保证邮件将按特定顺序处理.
发件人是一个发布createOrder和reviseOrder命令的订单系统.发件人允许用户向同一订单提交多个修订版,因此队列中可以同时包含修订版4和修订版3.每个修订版都有一个与之关联的修订号和原因代码,这些代码驱动了一些业务逻辑,因此我们不能忽略任何修订或至少部分原因.
我有几个想法如下 -
将修订号存储在目标记录中.发件人在每个修订消息中发送其修订号.处理程序比较发件人和目标修订号,如果匹配,则更新记录,否则将消息放在队列末尾.使用此方法,如果修订版2消息失败并进入错误队列,则永远不会处理修订版3.
发件人发送每个修订消息的所有修订的所有原因代码的历史记录.因此,如果修订版2消息失败,则修订版3消息将具有所有原因代码.这些原因代码将记录在目标中,但可能不会出现与先前修订原因代码相关联的任何业务逻辑.
我们如何为这种情况设计?
还有关于如何处理失败的修订消息的任何想法?
一些指导非常感谢.
谢谢.
开箱即用NserviceBus的主要指导原则之一就是您应该按照顺序无关紧要的方式构建系统.虽然我之前已经建立了一个有序的NSB系统,但我决定这样做:
这通常效果很好,但是如果某些事情发生故障太长时间,并且需要人工干预重新排序,有时候事情会变得有点不合适.
在您的方案中,可能有更好的方法.鉴于您只想在订单的修订中订购.我认为你可以用不需要有序交付的方式来构建它.
这有很多好处.
但它有以下缺点: