Axon Framework - возможно ли иметь один процессор отслеживания событий для нескольких саг?
Начнем с того, что я использую Axon Framework версии 3.1.2 с включенными процессорами отслеживания событий для обоих @EventHandlers
и саги.
Текущее поведение по умолчанию для создания обработчиков событий для Sagas, как я вижу, заключается в создании единого обработчика событий отслеживания для одной Saga. Это работает довольно хорошо в масштабе микросервиса, но может оказаться проблемой в больших монолитных приложениях, которые могут реализовывать много Sagas. Поскольку я пишу такое приложение, я хочу лучше контролировать количество запущенных потоков, что, в свою очередь, даст мне лучший контроль над использованием пула соединений с базой данных, переключением контекста и использованием памяти. В идеале мне бы хотелось иметь столько процессоров отслеживания событий, сколько ядер процессоров, где каждый процессор событий выполняет несколько саг и / или @EventHandlers
,
Я уже понял, что я могу сделать это для @EventHandlers
через либо @ProcessingGroup
аннотация или EventHandlingConfiguration::assignHandlersMatching
метод, но SagaConfiguration
похоже не выставляет подобный API. На самом деле, самый конкретный SagaConfiguration::trackingSagaManager
Метод жестко запрограммирован, чтобы создать новый TrackingEventProcessor
объект, который заставляет меня думать, что я пытаюсь достичь в настоящее время невозможно. Итак, вот мой вопрос: есть ли какой-то неочевидный способ, который мне не хватает, который позволит мне выполнять несколько саг в контексте одного обработчика событий?
1 ответ
Я могу подтвердить с вами, что (в настоящее время) невозможно управлять несколькими сагами однимEventProcessor
, Кроме того, я сомневаюсь в том, что за и против это делать, поскольку ваш сценарий не кажется странным на первый взгляд. Я рекомендую оставить запрос на добавление функции на страницу AxonFramework GitHub. Таким образом, мы (1) документируем эту идею / желание и (2) имеем хорошее место, чтобы обсудить, реализовать это или нет.