Как правильно обрабатывать исключения параллелизма в EventStore?
Как использовать JOliver EventStore 3.0 и получать команды от NServiceBus, как правильно обрабатывать исключения параллелизма? Если у меня более одного рабочего потока, это может быть обычным явлением.
Опция 1
try
{
// store the event
...
}
catch (ConcurrencyException)
{
_bus.HandleCurrentMessageLater();
}
Вариант 2
Позвольте ему вернуться к NServiceBus и получить повторную попытку с опцией MsMqTransportConfig.MaxRetries из конфигурации.
Вариант 3
Что-то, о чем я не думаю?
1 ответ
Решение
Вы можете сравнить незафиксированные события с зафиксированными событиями и посмотреть, действительно ли они конфликтуют (в соответствии с вашими бизнес-правилами) - если нет конфликтов, вы можете разрешить сохранение событий, в противном случае перезапустить.
Вообще, хотя я просто позволил ему бросить и повторить попытку NServiceBus.