Что такое ProcessingGroup (@ProcessingGroup)?

#axon

#axon

Вопрос:

Я новичок в Axon Framework и изо всех сил пытаюсь понять, что такое группы обработки и для чего они используются.

Если вы, ребята, сможете подробнее рассказать об этом, я был бы вам очень признателен.

Я пытаюсь запустить 2 экземпляра одного и того же приложения на разных хостах с одной базой данных (хранилище событий). Однако я получаю сообщение об ошибке, приведенное ниже. Первый хост работает нормально, а второй — нет.

Должен ли я назначать им разные группы обработки?

 org.axonframework.eventhandling.tokenstore.UnableToClaimTokenException: Unable to claim token 'projections[0]'. It is owned by '1@xxxxx-yyyyy-zzzzz'
 

С уважением,
Карло

Ответ №1:

добро пожаловать! Позвольте мне разобраться в ваших сомнениях и попытаться вам помочь 🙂

  • Что такое группа обработки?

Группа обработки — это логический способ группирования обработчиков событий. Вы можете определить их в своем компоненте обработки событий с помощью @ProcessingGroup("processingGroupName") аннотации или, если вы не указываете имя, значением по умолчанию является full.package.name . Имейте в виду, что для каждой группы обработки создается обработчик событий отслеживания.

  • Для чего используется группа обработки?

Как было сказано ранее, это очень сильно связано с обработчиком событий отслеживания. В этом случае каждый TEP запрашивает свой токен отслеживания (чтобы избежать многократной обработки одного и того же события в разных потоках / узлах). Вы можете подробно прочитать об этом здесь.

  • Как насчет вашей проблемы?

Из общего журнала и ваших комментариев, в которых указано, что у вас есть 2 экземпляра, это просто означает, что один экземпляр уже потребовал этот токен, а другой не может претендовать на него. Если первый выпустит его, они будут наперегонки претендовать на него, а это значит, что любой из них может это сделать. Существуют способы параллельной обработки обоих событий, и вы можете лучше ознакомиться с документами здесь и здесь.

Подводя итог, в этой строке журнала нет ничего плохого, и я полагаю, что вы рассматривали ее как INFO , а не ERROR как .

Надеюсь прояснить ваши сомнения по этому поводу.

Комментарии:

1. Это отвечает на мои вопросы. Рассмотрим их параллельный запуск в соответствии с документами. Спасибо.