Axon4 - стандартный механизм обработки исключений - PullRequest
0 голосов
/ 07 февраля 2019

Что такое стандартный механизм обработки исключений для Axon4?Addiotnaally - как вы гарантируете, что если исключение произойдет во время одного из событий в Saga (между состояниями), предыдущие состояния будут откатываться?

Любой пример поможет.

1 Ответ

0 голосов
/ 08 февраля 2019

Это довольно широкий вопрос, который вы задаете здесь, Прашант, с парой ответов на него.Кроме того, вы задаете два вопроса, один из которых заключается в том, каков подход обработки исключений, а два - как обращаться с исключениями в Sagas.

Итак, когда вы говорите о Sagas и событиях, я собираюсь занять позициючто вы хотите знать процесс обработки исключений вокруг событий.Позвольте мне сначала ответить на ваш первый вопрос здесь.Как вы, возможно, читали в Справочном руководстве, Axon использует так называемый EventProcessor в качестве технического механизма для передачи событий в ваши «компоненты обработки событий» и Saga.

EventProcessors допускает два различных уровня обработки исключений: 1. Когда исключение возникает в аннотированной функции @EventHandler / @SagaEventHandler, оно может быть перехвачено в ListenerInvocationErrorHandler.2. Когда в EventProcessor возникает исключение, оно может быть перехвачено в ErrorHandler.

Оба они могут быть установлены в Axon 4, имея дело с EventProcessingConfigurer и вызывая их соответствующие функции регистра., которые позволяют вам установить глобальные значения по умолчанию или настроить их для каждого обработчика событий.По умолчанию используются значения LoggingErrorHandler и PropagatingErrorHandler.

. Второй вопрос, который вы задаете, касается того, как выполнить откат состояния в саге при возникновении исключения.Я хотел бы предложить вам следующее: при получении события вы сначала изменяете состояние , и только после этого вы будете выполнять другие операции.

Другие операции, такие как вызов третьегопартийный сервис или публикация команды.Как вы заметили, эти операции могут завершиться с ошибкой.Это, однако, не должно откатывать состояние саги вообще.Событие уже произошло .Тот факт, что операция после этого не удалась, не меняет факт того, что это событие произошло.

Таким образом, я предлагаю вам выполнить компенсирующее действие , если такое исключение происходит.

...