Обработка двух событий последовательно в Axon - PullRequest
0 голосов
/ 29 февраля 2020

Могу ли я поместить последовательность между (или выполнить с определенным временным промежутком) двумя событиями, которые будут обрабатываться последовательно в аксоне. Оба события создаются одновременно. Ниже приведены примеры событий.

Поскольку мое второе событие зависит от результатов выполнения первого. Я использую RabbitMq для публикации sh для обмена сообщениями.

@EventHandler
public void handleEvent1(Event1 event) {
    LOG.debug("An event of type {}, occured.", event.getClass().getName());
 }

@EventHandler
public void handleEvent2(Event2 event) {
    LOG.debug("An event of type {}, occured.", event.getClass().getName());
 }

1 Ответ

0 голосов
/ 02 марта 2020

Не могли бы вы уточнить, в каком случае вам это нужно? У меня есть готовый ответ на ваш вопрос, но, возможно, я могу предложить другой порядок действий в зависимости от сценария, в котором вы нуждаетесь.

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

Из EventStore это будет означать, что вы будете получать события в порядке глобальный индекс каждого из событий. globalIndex - это поле в каждом EventMessage, используемое для обозначения его порядка во всем хранилище событий.

При использовании AMQP / RabbitMQ в качестве источника сообщений сохраняется аналогичный порядок. Событие, которое раньше было в очереди, будет обработано в первую очередь на стороне потребителя.

Если вы хотите, чтобы Event1 обрабатывалось до Event2, то его нужно будет опубликовать до Другой. Таким образом, контроль над порядком публикации является ключевым, если вам требуется гарантированный заказ. Axon не предоставляет ручек для настройки порядка обработки событий, так как он гораздо более идеален, если ваша система не полагается непосредственно на порядок событий. Компонент обработки должен стоять сам по себе, не делая предположений по этому вопросу.

Надеюсь, это поможет вам, Амит!

...