【发布时间】:2019-01-25 21:03:50
【问题描述】:
我正在尝试使用 MassTransit.ExtensionsDependencyInjectionIntegration 进行设置并尝试使用 PrefetchCount。我注意到对于多条消息,有时会使用同一个消费者。
有没有办法强制masstransit 为每条消息创建消费者?
我的服务逻辑需要为每条消息提供新的 di 范围,据我所知,只有我们每次都创建消费者才有可能。
更新
我使用this library 来注册消费者和发布者。
Here you can see,它使用TryAddTrancient() 注册消费者。这会是个问题吗?我仍然认为 di 容器应该为每个请求产生消费者。
看起来这不是故意的行为,我会更深入地研究我的问题。
【问题讨论】:
-
请至少提供您用于注册消费者的代码。
-
如果您已将您的消费者注册为作用域,并且正在为 MassTransit 使用 MS DI 扩展,则应从容器中为每条消息解析一个新的消费者。更高的预取计数导致更高程度的并发,多个消费者实例同时运行。
-
@AlexeyZimarev 我已经更新了帖子。我使用了一个包装库,但我在它注册消费者的地方链接了一行代码。
-
@ChrisPatterson 是的,当然,我明白这一点。我为构造函数和消费者的
Consume()方法设置断点。然后看到单个构造函数调用和多个 Consume 调用。我绝对没有将我的消费者注册为单身人士,所以我对这种行为感到很困惑。我还链接了一个用于注册消费者的库。 -
那个库是一个残骸,它没有使用 MS DI 消费者范围提供程序,所以根本没有创建范围:github.com/axle-h/MassTransit.RabbitMq.Extensions.Hosting/blob/… - 该库需要一些清理才能使它合理。
标签: c# dependency-injection .net-core rabbitmq masstransit