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

ok. Спасибо за ответ. –

+0

Это что-то, что обработчик команд может повторить, если он отвечает за сохранение в хранилище событий? Или должна ли вся команда обрабатывать бросок и отменять транзакцию? –