【问题标题】:Custom consumer implementation factory with Microsoft Dependency Injection使用 Microsoft Dependency Injection 的自定义使用者实施工厂
【发布时间】:2021-11-05 22:16:59
【问题描述】:

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

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

使用AddConsumer&lt;T&gt;() 方法?

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

【问题讨论】:

    标签: masstransit


    【解决方案1】:

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

    你明白了,对吧?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多