繁体   English   中英

asp.net核心依赖注入配置

[英]asp.net core dependency injection Configure

我希望在我的应用程序中注入一个kafka制作人作为单身人士。 处理实例时,它目前需要两个步骤。 首先,你必须刷新缓冲区,第二次调用dispose。 为了提高性能,只有在不再处理消息时才会发生这种情况。

我的ASP.NET核心解决方案是在DI中使用AddSingleton()方法,然后使用ApplicationLifetime.ApplicationStopping.Register来注册一个将刷新并处理生产者的回调。 我按照这里的教程: https//andrewlock.net/four-ways-to-dispose-idisposables-in-asp-net-core/

整理一个快速测试我在我的Startup课程中做了以下事情:

public void ConfigureServices(IServiceCollection services)
{         
    var producerConfig = new Dictionary<string, object>
    {
        { "bootstrap.servers", "192.168.99.100:9092" },
        { "client.id", Dns.GetHostName() },
                    { "api.version.request", true }
    };
    services.AddSingleton(new Producer<Null, string>(producerConfig, null, new StringSerializer(Encoding.UTF8)));
   services.AddMvc();
}


public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IApplicationLifetime lifetime)
{
    loggerFactory.AddConsole();
    app.UseMvc();
    app.UseWebSockets();            
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();

    }
    lifetime.ApplicationStopping.Register(flushAndDispose, app.ApplicationServices.GetRequiredService<Producer>());
}

但是当它运行时我收到以下错误:

Microsoft.Extensions.DependencyInjection.Abstractions.dll中出现“System.InvalidOperationException”类型的异常,但未在用户代码中处理:“类型'Confluent.Kafka.Producer'的服务尚未注册。”

假设Producer<T1,T2>来自Producer

您没有使用服务集合显式注册Producer ,因此提供程序不知道如何解决它。

services.AddSingleton<Producer>(
    c => new Producer<Null, string>(producerConfig, null, 
        new StringSerializer(Encoding.UTF8)));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM