【发布时间】:2020-10-12 17:52:11
【问题描述】:
我正在开发 Blazor Server .NET 5 项目,该项目使用了一个不错的 MassTransit 7.0.5-develop2976 框架(顺便感谢 Chris!)。
我很好奇 为什么 MassTransit ServiceCollectionBusConfigurator 不向 DI 添加消费者,而我却这样做了 .AddConsumer<T>()。结果,我收到“无法解析消费者类型...”异常,如下所示。请参阅下面的解决方法。
例如,如果我通过它添加我的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)
问题:从架构的角度来看,这种行为的原因是什么?我错过了什么吗?
【问题讨论】:
-
它绝对应该将您的消费者添加到容器中。如果您有可重现的案例,请告诉我。单元测试全部通过,所以必须注册。
-
当计划的重复消息发送到作为此使用者的接收端点的总线队列(RabbitMQ 传输)时,会发生此异常。我非常忙于当前的编码工作,因此无法准备复制包。如果你愿意 - 我们可以快速共享屏幕通话 - 我会告诉你的。你会@ChrisPatterson 吗?
-
不,我认为这不是 MassTransit 的问题,所以除非你能在失败的单元测试或其他什么情况下显示它,否则我将暂时放弃它。
-
我今天实际上在 7.2.1 中看到了这一点 - 我将在 repo 中展开讨论。
标签: dependency-injection masstransit