在EventStore中处理并发异常的正确方法是什么?

时间:2012-03-20 16:42:30

标签: nservicebus cqrs event-store

使用JOliver EventStore 3.0并从NServiceBus中恢复命令,处理并发异常的正确方法是什么?如果我有多个工作线程,这可能是一个常见的问题。

选项1

try
{
    // store the event
    ...
}
catch (ConcurrencyException)
{
    _bus.HandleCurrentMessageLater();
}

选项2

让它回到NServiceBus并从配置中重新使用MsMqTransportConfig.MaxRetries选项。

选项3

我没想到的东西?

1 个答案:

答案 0 :(得分:3)

您可以将未提交的事件与提交的事件进行比较,看看它们是否实际冲突(根据您的业务规则) - 如果没有冲突,那么您可以允许事件持久化,否则重新抛出。

一般情况下,我只是让它抛出并重新进行NServiceBus。