Как правильно опубликовать sh сообщение в саге с помощью kafka? - PullRequest
1 голос
/ 25 февраля 2020

Я проектирую библиотеку, используя шаблон cqrs. Я рассматриваю сагу как совокупность, используя метод, упомянутый в https://blog.jonathanoliver.com/cqrs-sagas-with-event-sourcing-part-i-of-ii/.

. Здесь у меня возникает вопрос о том, как реализовать доставку сообщений, подписанных сагой.

Допустим, у меня есть два агрегата, Account и MoneyTransferSaga в приложении. Команда TransferMoney вызовет событие MoneySent, которое уменьшит сумму остатка на счете. Событие MoneySent инициировало бы создание MoneyTransferSaga, который отправит команду ReceiveMoney на другую учетную запись, что увеличит сумму остатка на счете.

Итак, мы видим, что MoneyTransferSaga подписывается на событие MoneySent. Вопрос, который я хотел бы задать: как правильно отправить это событие MoneySent в сагу?

Я использую kafka в качестве посредника сообщений, и здесь у меня есть темы account-команды и account-events для совокупности счетов.

Подход A: пометьте MoneyTransferSaga как другую группу потребителей, которая подписывается на topi c «account-events». Когда наступающее событие будет соответствовать типу «MoneySent», запустите обработчик саги. Другие события будут игнорироваться обработчиком событий саги.

Подход B: создать топи c, называемую "money-перевод-saga-events". Когда событие отправляется в account-events, обработчик события account дублирует событие в topi c "money-Transfer-Saga-events". MoneyTransferSaga подписывается на топи c "денежные переводы-саги-события" вместо "счетов-событий".

Я не уверен, какой подход лучше.

Использование подхода А Экземпляр саги будет получать все события от учетной записи.

Используя подход B, служба учетной записи должна знать о существовании MoneyTransferSaga.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...