80 lines
2.3 KiB
C#
80 lines
2.3 KiB
C#
// 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<IConfiguration>(config);
|
|
|
|
// 初始化日志
|
|
Log.Logger = new LoggerConfiguration()
|
|
.ReadFrom.Configuration(config) // 从 appsettings.json 读取配置
|
|
.CreateLogger();
|
|
|
|
// 配置日志系统
|
|
services.AddLogging(logging =>
|
|
{
|
|
logging.ClearProviders();
|
|
logging.AddSerilog();
|
|
});
|
|
services.AddSingleton<IAdminClientService, AdminClientService>();
|
|
services.AddTransient(typeof(IProducerService<,>), typeof(ProducerService<,>));
|
|
//services.AddSingleton(typeof(IConsumerService<,>), typeof(ConsumerService<,>));
|
|
|
|
// 构建ServiceProvider
|
|
var serviceProvider = services.BuildServiceProvider();
|
|
|
|
// 获取日志记录器工厂
|
|
var loggerFactory = serviceProvider.GetRequiredService<ILoggerFactory>();
|
|
var logger = loggerFactory.CreateLogger<Program>();
|
|
logger.LogInformation("程序启动");
|
|
|
|
var adminClientService = serviceProvider.GetRequiredService<IAdminClientService>();
|
|
|
|
string topic = "test-topic";
|
|
//await adminClientService.DeleteTopicAsync(topic);
|
|
// 创建 topic
|
|
await adminClientService.CreateTopicAsync(topic, 3, 3);
|
|
|
|
|
|
var producerService = serviceProvider.GetRequiredService<IProducerService<Null, string>>();
|
|
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();
|