初始化

This commit is contained in:
2025-11-21 08:48:01 +08:00
commit b4d684a84c
202 changed files with 28585 additions and 0 deletions

135
duoge/Program.cs Normal file
View File

@@ -0,0 +1,135 @@
using System.Text;
using Confluent.Kafka;
using Google.Protobuf;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Tutorial;
namespace duoge
{
internal class Program
{
static void Main(string[] args)
{
string json = @"{ 'name': 'John Doe', 'id': 123, 'email': 'john@example.com' }";
JObject jsonObject = JObject.Parse(json);
Person person = new Person();
person.Name = (string)jsonObject["name"];
person.Id = (int)jsonObject["id"];
person.Email = (string)jsonObject["email"];
Console.WriteLine("Name: " + person.Name); // 输出转换后的ProtoBuf对象信息
byte[] bbb1 = Encoding.UTF8.GetBytes(json);
byte[] bbb = person.ToByteArray();
Person PPP = Person.Parser.ParseFrom(bbb);
// 方法1使用静态Parser推荐
Person restoredPerson1 = Person.Parser.ParseFrom(bbb);
// 方法2创建新的Parser实例
var parser = new MessageParser<Person>(() => new Person());
Person restoredPerson2 = parser.ParseFrom(bbb);
// 方法3使用扩展方法
Person restoredPerson3 = Person.Parser.ParseFrom(bbb.AsMemory<byte>().ToArray());
Console.WriteLine("Hello, World!");
}
static void MMM()
{
string[] _topics = ["", ""];
List<IConsumer<string, string>> _consumers = new List<IConsumer<string, string>>();
// 为每个主题创建一个消费者
foreach (var topic in _topics)
{
var consumerConfig = new ConsumerConfig
{
BootstrapServers = "localhost:9092",
GroupId = $"consumer-group-{topic}",
AutoOffsetReset = AutoOffsetReset.Earliest,
EnableAutoCommit = false
};
var consumer = new ConsumerBuilder<string, string>(consumerConfig).Build();
consumer.Subscribe(topic);
_consumers.Add(consumer);
// 为每个消费者启动一个独立的任务
Task.Run(() => ConsumeMessages(consumer, topic));
}
}
static private async Task ConsumeMessages(IConsumer<string, string> consumer, string topic)
{
try
{
var consumeResult = consumer.Consume();
if (consumeResult != null)
{
Console.WriteLine($"收到消息 - 主题: {topic}, 键: {consumeResult.Message.Key}, 值: {consumeResult.Message.Value}");
// 手动提交偏移量
consumer.Commit(consumeResult);
}
}
catch (ConsumeException ex)
{
}
catch (OperationCanceledException)
{
}
}
//private async Task ProcessMessage(string topic, string key, string value)
//{
// // 根据不同的主题执行不同的处理逻辑
// switch (topic)
// {
// case "topic-1":
// await ProcessTopic1Message(key, value);
// break;
// case "topic-2":
// await ProcessTopic2Message(key, value);
// break;
// // ... 其他主题的处理逻辑
// default:
// _logger.LogInformation($"处理默认主题消息: {topic}, Key: {key}, Value: {value}");
// break;
// }
//}
//private async Task ProcessTopic1Message(string key, string value)
//{
// // 主题1的具体处理逻辑
// await Task.Delay(100); // 模拟处理耗时
// _logger.LogInformation($"处理主题1消息: Key={key}, Value={value}");
//}
//private async Task ProcessTopic2Message(string key, string value)
//{
// // 主题2的具体处理逻辑
// await Task.Delay(100); // 模拟处理耗时
// _logger.LogInformation($"处理主题2消息: Key={key}, Value={value}");
//}
//public Task StopAsync(CancellationToken cancellationToken)
//{
// _logger.LogInformation("停止Kafka消费者服务...");
// _cancellationTokenSource.Cancel();
// foreach (var consumer in _consumers)
// {
// consumer.Close();
// consumer.Dispose();
// }
// return Task.CompletedTask;
//}
}
}