【发布时间】:2021-11-05 22:16:59
【问题描述】:
有没有办法像下面的服务一样注册消费者:
services.AddTransient < IMyService > (provider => {
return new MyServiceImplementation(2);
});
使用AddConsumer<T>() 方法?
我需要的是消费者工厂的自定义实现,因为它将根据配置注入其依赖项之一的不同实例。
【问题讨论】:
标签: masstransit
有没有办法像下面的服务一样注册消费者:
services.AddTransient < IMyService > (provider => {
return new MyServiceImplementation(2);
});
使用AddConsumer<T>() 方法?
我需要的是消费者工厂的自定义实现,因为它将根据配置注入其依赖项之一的不同实例。
【问题讨论】:
标签: masstransit
MassTransit 注册通过AddConsumer 添加的消费者,如下所示:
collection.AddScoped<T>();
欢迎您在配置 MassTransit 之后创建您自己的注册表,该注册表应替换 MassTransit 注册的注册表。在你上面的例子中,它可能是这样的:
services.AddScoped<TConsumer>(provider =>
{
var options = provider.GetService<SomeOptions>();
if (options.UseFirst)
return new TConsumer(provider.GetRequiredService<Impl1>()
return new TConsumer(provider.GetRequiredService<Impl2>()
});
你明白了,对吧?
【讨论】: