[英]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.