Потребители Кафки в Луковой Архитектуре - PullRequest
0 голосов
/ 30 апреля 2020

Я работаю с проектом, следующим за DDD и имеющим consumers до Kafka Queue. Мой вопрос прост: где проживают потребители в Onion Architecture и Hexagonal Architecture? Являются ли они обработчиками событий или они являются частью инфраструктуры?

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

1 Ответ

0 голосов
/ 30 апреля 2020

Я вижу это так:

  1. Ваши агрегаты - это Ядро

  2. Обработчиками сообщений являются сценарии использования, которые используют зависимости ( как интерфейсы репозитория) и ядро ​​для выполнения бизнес-прецедента.

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

При таком подходе вы можете выполнить модульное тестирование вариантов использования без беспокоиться об инфраструктуре, и вы можете заменить всю технологию очереди сообщений. Тот же подход работает для обработки запросов API. На практике единственное отличие состоит в том, что с помощью API вы можете возвращать ответ синхронно, а с помощью обмена сообщениями - нет.

В качестве практического замечания, в. NET Я использую библиотеку под названием Mediatr для реализации и запуска вариантов использования. В java я обнаружил PipelinR , который выглядит с первого взгляда. Этот тип подхода позволяет вам реализовать все варианты использования одинаково для всех ваших синхронных и асинхронных применений.

...