2

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

选项1

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

选项 2

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

选项 3

我没有想到的东西?

4

1 回答 1

3

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

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

于 2012-03-20T21:37:49.853 回答