Dependency injection 为什么MassTransit'ServiceCollectionBusConfigurator'不';不能通过'AddConsumer'将'IConsumer'添加到'DI'?

Dependency injection 为什么MassTransit'ServiceCollectionBusConfigurator'不';不能通过'AddConsumer'将'IConsumer'添加到'DI'?,dependency-injection,masstransit,Dependency Injection,Masstransit,我正在从事Blazor Server.NET 5项目,该项目使用了一个漂亮的MassTransit7.0.5-develop2976框架(顺便说一句,谢谢!) 我很好奇为什么MassTransitServiceCollectionBusConfigurator在我添加.AddConsumer()时不将消费者添加到DI。因此,我得到如下异常“无法解析消费者类型…”。请参阅下面的解决方法 例如,如果我通过它添加我的IConsumer类型,类似的serviceCollectionMediaConfig

我正在从事
Blazor Server
.NET 5
项目,该项目使用了一个漂亮的
MassTransit
7.0.5-develop2976
框架(顺便说一句,谢谢!)

我很好奇为什么
MassTransit
ServiceCollectionBusConfigurator
在我添加
.AddConsumer()
时不将消费者添加到DI
。因此,我得到如下异常“无法解析消费者类型…”。请参阅下面的解决方法

例如,如果我通过它添加我的
IConsumer
类型,类似的
serviceCollectionMediaConfigurator
会执行此操作

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

MassTransit.ConsumerException:无法解析消费者类型“SomeMyConsumer”。
在MassTransit.ExtensionDependencyInjectionIntegration.ScopeProviders.DependencyInjectionConsumerScopeProvider.MassTransit.Scoping.IConsumerScopeProvider.GetScope[TConsumer,T](ConsumeContext`1 context)
在MassTransit.Scope.ScopeConsumerFactory`1.Send[TMessage](ConsumerContext`1 context,IPipe`1 next)
在MassTransit.Pipeline.Filters.ConsumerMessageFilter`2.GreenPippes.IFilter.Send(ConsumerContext`1 context,IPipe`1 next)

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

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

services.AddScoped<SomeMyConsumer>();

顺便说一句,如果相似的抽象使用相同的方法签名,那么它们的行为应该相似,不是吗?

它绝对应该将您的消费者添加到容器中。如果你有一个可复制的案例,请告诉我。单元测试全部通过,因此必须对其进行注册。当计划的定期消息发送到总线队列(RabbitMQ传输)时会发生此异常,该总线队列是此使用者的接收端点。我正忙于我当前的编码工作,所以无法准备复制包。如果您愿意-我们可以快速进行共享屏幕通话-我将向您展示。你愿意@ChrisPatterson吗?不,我不认为这是MassTransit的问题,所以除非你能在失败的单元测试或其他什么中显示出来,否则我现在就不做了。
services.AddScoped<SomeMyConsumer>();
services.AddMediator(configurator =>
{
    configurator.AddConsumer<SomeMyConsumer>();
});