Вопрос по реализации cqrs / saga с Kafka - PullRequest
0 голосов
/ 30 января 2020

Я изучаю cqrs и хотел бы реализовать шаблон саги для обработки распределенных транзакций с использованием Kafka.

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

Если обработчик агрегатных событий успешно обработал событие, смещение будет зафиксировано, так что задание в посреднике пропало.

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

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

1 Ответ

0 голосов
/ 31 января 2020

, чтобы работа в брокере прекратилась.

Мне кажется, вы неправильно понимаете, что использование сообщений из топики Кафки c не удаляет их.

Часть вашего сагового потока должна быть действием для фиксации полной трассировки смещения после того, как каждая служба выполнит свое полное действие.

имеет ли смысл иметь группу потребителей для агрегата и создать еще одну группу потребителей для саги?

Имеет смысл иметь промежуточные темы, конечно. Вы можете использовать процессоры Kafka Streams, чтобы легко реализовать это

...