在事件商店中处理并发异常的正确方法是什么?



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

选项1

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

选项2

让它返回到NServiceBus,并使用配置中的MsMqTransportConfig.MaxRetries选项重试。

选项3

有什么我没有想到的?

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

不过一般来说,我只是让它抛出并让NServiceBus重试。

相关内容

  • 没有找到相关文章

最新更新