2012-03-20 58 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

相關問題