Razbezhkin
@Razbezhkin
программист, преподаватель

Как связать шину MassTransit со всеми консьюмерами из Microsoft Dependency Injection?

Здравствуйте.
Ситуация:
Есть множество классов, которые реализуют интерфейс IConsumer<какой-нибудь тип>.
Эти классы зарегистрированы в DI контейнере (Unity и MS DI, тот, который в .net core)
При использовании Unity при конфигурировании прослушивания сообщений достаточно вызвать у IReceiveEndpointConfigurator метод LoadFrom и указать DI контейнер в параметре, и шина начнет через него сама создавать классы для обработки входящих соединений. это описано в документации: https://masstransit-project.com/usage/containers/u... (строка ec.LoadFrom(container);)

А вот при использовании .net core и его DI ситуация меняется принципиально (согласно документации https://masstransit-project.com/usage/containers/m...
Теперь, почему то, нужно многократно указывать каждый класс, реализующий IConsumer
(В документации это строки: x.AddConsumer(); и e.ConfigureConsumer(provider); и еще зачем-то добавляется SubmitOrder)

причем существует nuget пакет MassTransit.Extensions.DependencyInjection, который добавляет расширение LoadFrom (интуитивно для такого же сценария как в Unity), но почему-то не работающего (у меня).

Еще одно настораживающее обстоятельство: метод LoadFrom помечен атрибутом [Obsolete] - устаревший. Непонятно, почему и что разработчики предлагают использовать вместо него.

ну и сам вопрос: как реализовать сценарий, когда MassTransit самостоятельно через DI создает экземпляры классов, которые обрабатывают входящие сообщения?

Спасибо за внимание.
  • Вопрос задан
  • 127 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы