#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. Это отвечает на мои вопросы. Рассмотрим их параллельный запуск в соответствии с документами. Спасибо.