为什么 MassTransit `ServiceCollectionBusConfigurator` 不通过 `AddConsumer` 将 `IConsumer` 添加到 `DI`?

Why MassTransit `ServiceCollectionBusConfigurator` doesn't add `IConsumer` to `DI` by `AddConsumer`?

我正在开发 Blazor Server .NET 5 项目,它使用了一个很好的 MassTransit 7.0.5-develop2976 框架(顺便感谢 Chris!)。

我很好奇为什么我 .AddConsumer<T>() MassTransit ServiceCollectionBusConfigurator 没有将消费者添加到 DI。结果,我收到如下所示的“无法解析消费者类型...”异常。请参阅下面的解决方法。

例如,如果我通过它添加我的 IConsumer<> 类型,类似 ServiceCollectionMediatorConfigurator 就会执行此操作。

我在 MassTransit 尝试解析我的消费者时遇到的异常示例(在我的情况下,它发生在触发定期计划作业时,但这并不重要)。

MassTransit.ConsumerException: Unable to resolve consumer type 'SomeMyConsumer'.
         at MassTransit.ExtensionsDependencyInjectionIntegration.ScopeProviders.DependencyInjectionConsumerScopeProvider.MassTransit.Scoping.IConsumerScopeProvider.GetScope[TConsumer,T](ConsumeContext`1 context)
         at MassTransit.Scoping.ScopeConsumerFactory`1.Send[TMessage](ConsumeContext`1 context, IPipe`1 next)
         at MassTransit.Pipeline.Filters.ConsumerMessageFilter`2.GreenPipes.IFilter<MassTransit.ConsumeContext<TMessage>>.Send(ConsumeContext`1 context, IPipe`1 next) 

问题:从架构的角度来看,这种行为的原因是什么?我错过了什么吗?

作为 解决方法,如果您像下面的示例一样明确地将您的消费者添加到 IServiceCollection - 错误当然会消失:

services.AddScoped<SomeMyConsumer>();

...甚至也可以通过 ServiceCollectionMediatorConfigurator 注册同一个消费者:

services.AddMediator(configurator =>
{
    configurator.AddConsumer<SomeMyConsumer>();
});

P.S。恕我直言,如果相似的抽象使用相同的方法签名,它们的行为应该相似,不是吗?