C# MediateR как временный Eventbus - PullRequest
0 голосов
/ 12 марта 2020

Я реализую приложение с подходом DDD и архитектурой Microservices, я собираюсь опубликовать sh событие после завершения Command1, затем мне нужно запустить Command2 автоматически после публикации события. Я работаю с ограниченными ресурсами, поэтому я не могу использовать RabbitMq или другие сервисы онлайн-мероприятий. Я продолжу этот подход до тех пор, пока не появятся новые ресурсы. Мое приложение содержит два домена, и я собираюсь реализовать оба из них как единый сервис (это помогает мне передавать события между ними без какого-либо внешнего Eventbus). При таком подходе я могу разделить тему на несколько служб, когда у меня будет достаточно ресурсов.

Мой вопрос: могу ли я использовать посредник для подписки на события? и в этой функции замените ее реальной шиной событий.

Мое приложение - это веб-приложение, написанное с использованием Asp. net core.

Ответы [ 2 ]

1 голос
/ 12 марта 2020

MediatR позволяет вам отделить взаимодействие системных компонентов inpro c, поэтому я думаю, что было бы возможно разработать дескриптор, который делает вещи inpro c и позже изменить этот код на строку с eventBus.publish(event), но помните, что MediatR обычно используется для команд, и то, что вы должны смоделировать в этом случае, - это события, поэтому постарайтесь не слишком предвзятым при разработке модели inpro c; Всегда имейте в виду, что в конце объективным в данном случае является публикуемое sh событие.

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

Посредник только в процессе. Это не может служить цели EventBus.

EventBus - это буфер между сервисами, поэтому сервисы не переполняются событиями. Ваш обработчик, который подписывается на команды с помощью Mediator, будет немедленно уведомлен, и это не буфер.

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

Взгляните на DDD здесь

...