CQRS - постоянное правило хранилища команд - PullRequest
0 голосов
/ 05 марта 2019

Я использую Paramore Brigther для реализации CQRS и его хранилища команд.У меня такой вопрос:

Какой будет наилучшая практика, будет ли она сохранять команду до или после завершения метода обработки?Я читаю здесь рекомендуется делать это раньше, но разве мы не хотим не сохранять команду в случае сбоя обработчика?

Однако я могу вспомнить несколько сценариев, в которых вы хотите сохранить команду до / после выполнения метода Хендлера:

Случай А. Если существует IncreaseCreditLimitCommand и во время поиска клиента, клиент не найден,ИМО, мы не хотим хранить эту команду, не так ли?

Случай B. если есть IncreaseCreditLimitCommand и во время проверки бизнеса клиенту отказывают в увеличении лимита.ИМО, мы все еще хотим сохранить эту команду, не так ли?

Ответы [ 2 ]

0 голосов
/ 03 апреля 2019

Я не знаю, что такое "Paramore Brigther", но я могу рассказать вам о DDD и CQRS.Эти две методологии часто используются с источником событий, потому что они сочетаются друг с другом, как кусочки головоломки.В Event-Sourcing вы сохраняете события, а не команды.Это имеет большой смысл, поскольку DDD управляется событиями.Я не буду объяснять это более глубоко, потому что это очень большая тема, но я думаю, что вы должны рассмотреть этот подход вместо хранения команд.Это избавит вас от многих проблем с дизайном в будущем.

0 голосов
/ 05 марта 2019

Какой будет наилучшая практика, будет ли она сохранять команду до или после завершения метода обработки?Я читал здесь, что рекомендую сделать это раньше, но разве мы не хотим не сохранять команду, если обработчик не работает?

Почему бы и нет?Если мы хотим иметь возможность воспроизвести то, что произошло позже, то нам также нужно иметь возможность воспроизводить команды, которые не выполняются.

Различные записи LMAX Disruptor хороши для чтенияделать, если вы рассматриваете проект, в котором постоянство команд является особенностью.

...