使用JOliver EventStore 3.0并从NServiceBus中恢复命令,处理并发异常的正确方法是什么?如果我有多个工作线程,这可能是一个常见的问题。
选项1
try
{
// store the event
...
}
catch (ConcurrencyException)
{
_bus.HandleCurrentMessageLater();
}
选项2
让它回到NServiceBus并从配置中重新使用MsMqTransportConfig.MaxRetries选项。
选项3
我没想到的东西?
答案 0 :(得分:3)
您可以将未提交的事件与提交的事件进行比较,看看它们是否实际冲突(根据您的业务规则) - 如果没有冲突,那么您可以允许事件持久化,否则重新抛出。
一般情况下,我只是让它抛出并重新进行NServiceBus。