// See https://aka.ms/new-console-template for more information using Confluent.Kafka; using JiShe.CollectBus.Kafka.AdminClient; using JiShe.CollectBus.Kafka.Consumer; using JiShe.CollectBus.Kafka.Producer; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Serilog; using System.Text.Json; using static Confluent.Kafka.ConfigPropertyNames; // 构建配置 var config = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json") .Build(); // 直接读取配置项 var greeting = config["ServerTagName"]; Console.WriteLine(greeting); // 输出: Hello, World! // 创建服务容器 var services = new ServiceCollection(); // 注册 IConfiguration 实例 services.AddSingleton(config); // 初始化日志 Log.Logger = new LoggerConfiguration() .ReadFrom.Configuration(config) // 从 appsettings.json 读取配置 .CreateLogger(); // 配置日志系统 services.AddLogging(logging => { logging.ClearProviders(); logging.AddSerilog(); }); services.AddSingleton(); services.AddTransient(typeof(IProducerService<,>), typeof(ProducerService<,>)); //services.AddSingleton(typeof(IConsumerService<,>), typeof(ConsumerService<,>)); // 构建ServiceProvider var serviceProvider = services.BuildServiceProvider(); // 获取日志记录器工厂 var loggerFactory = serviceProvider.GetRequiredService(); var logger = loggerFactory.CreateLogger(); logger.LogInformation("程序启动"); var adminClientService = serviceProvider.GetRequiredService(); string topic = "test-topic"; //await adminClientService.DeleteTopicAsync(topic); // 创建 topic await adminClientService.CreateTopicAsync(topic, 3, 3); var producerService = serviceProvider.GetRequiredService>(); int i = 1; while (i <= 10) { await producerService.ProduceAsync(topic, JsonSerializer.Serialize(new { topic = topic, val = i })); i++; } while (true) { var key = Console.ReadKey(intercept: true); // intercept:true 隐藏按键显示 if (key.Key == ConsoleKey.Escape) { Console.WriteLine("\n程序已退出"); break; } } (serviceProvider as IDisposable)?.Dispose();