Как правильно обрабатывать исключения параллелизма в EventStore?

Как использовать JOliver EventStore 3.0 и получать команды от NServiceBus, как правильно обрабатывать исключения параллелизма? Если у меня более одного рабочего потока, это может быть обычным явлением.

Опция 1

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

Вариант 2

Позвольте ему вернуться к NServiceBus и получить повторную попытку с опцией MsMqTransportConfig.MaxRetries из конфигурации.

Вариант 3

Что-то, о чем я не думаю?

1 ответ

Решение

Вы можете сравнить незафиксированные события с зафиксированными событиями и посмотреть, действительно ли они конфликтуют (в соответствии с вашими бизнес-правилами) - если нет конфликтов, вы можете разрешить сохранение событий, в противном случае перезапустить.

Вообще, хотя я просто позволил ему бросить и повторить попытку NServiceBus.

Другие вопросы по тегам