使用JOliver EventStore 3.0并从NServiceBus接收命令,处理并发异常的正确方法是什么?如果我有多个工作线程,这可能是常见的情况。
选项1
try
{
// store the event
...
}
catch (ConcurrencyException)
{
_bus.HandleCurrentMessageLater();
}
选项2
让它返回到NServiceBus,并使用配置中的MsMqTransportConfig.MaxRetries选项重试。
选项3
有什么我没有想到的?
您可以将未提交的事件与已提交的事件进行比较,看看它们是否真的发生了冲突(根据您的业务规则)-如果没有冲突,则可以允许事件持久化,否则可以重新抛出。
不过一般来说,我只是让它抛出并让NServiceBus重试。