Я создал приложение микросервиса, которое использует микросервисы с использованием MassTransit и RabbitMQ для связи.
Каждый микросервис разработан с использованием чистой архитектуры, поэтому у нас есть MediatR внутри каждый микросервис.
Можно ли использовать MassTransit и для внутреннего общения? поэтому я могу использовать одну и ту же подпись для всех сервисов, и когда я хочу предоставить сервис для использования между микросервисами, это будет легко сделать. Итак, MediatR используется для внутренней коммуникации, а RabbitMQ - для взаимодействия, и вся вселенная находится в системе MassTransit.
[Обновление] Мой вопрос в том, как мы можем настроить потребителей, чтобы некоторые из них можно было использовать внутри связь (через MediatR), а некоторые могут использоваться для внешней связи (через RabbitMQ) и легко изменять их изнутри на внешнюю.
[Update2] например, вот моя регистрация MassTransit:
services.AddMassTransit(x =>
{
x.AddConsumers(Assembly.GetExecutingAssembly());
x.AddBus(provider =>
Bus.Factory.CreateUsingRabbitMq(cfg =>
{
cfg.Host(new Uri(config.RabbitMQ.Address), h =>
{
h.Username(config.RabbitMQ.Username);
h.Password(config.RabbitMQ.Password);
});
cfg.ReceiveEndpoint("my-queue", ep => { ep.ConfigureConsumers(provider); });
}));
x.AddMediator((provider, cfg) => { cfg.ConfigureConsumers(provider); });
});
Чем я могу отличаться во внутреннем и внешнем общении? другими словами, как я могу зарегистрировать некоторых потребителей в MediatR, а некоторых в RabbitMQ?