使用 Microsoft 依赖注入的自定义消费者实现工厂

Custom consumer implementation factory with Microsoft Dependency Injection

有没有办法像下面的服务那样注册消费者:

services.AddTransient < IMyService > (provider => {
  return new MyServiceImplementation(2);
});

AddConsumer<T>()方法?

我需要的是消费者工厂的自定义实现,因为它将根据配置注入其依赖项之一的不同实例。

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>()
});

你看到照片了,对吧?