2012-03-20 74 views
2

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

选项1

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

选项2

让它丢回给NServiceBus,并从配置的MsMqTransportConfig.MaxRetries选项获得重审。

选项3

东西我没有想到的?

回答

3

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

通常虽然我只是让它抛出并NServiceBus重试。

+0

好的。感谢您的反馈。 – 2012-03-21 18:20:15

+0

这是命令处理程序可以重试它是否负责保存到事件存储?或者应该整个命令句柄抛出并反转交易? – 2014-04-23 07:34:01

相关问题