Здравствуйте.
Ситуация:
Есть множество классов, которые реализуют интерфейс 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 создает экземпляры классов, которые обрабатывают входящие сообщения?
Спасибо за внимание.