![](/img/trans.png)
[英]Example on how to use Headers with Confluent Kafka C# library
[英]How to read GenericRecord specific data in confluent kafka C#
这是我的简单代码片段,它试图阅读Avro通用记录表单消费者:
using (var schemaRegistry = new CachedSchemaRegistryClient(new SchemaRegistryConfig { SchemaRegistryUrl = schemaRegistryUrl }))
using (var consumer = new
ConsumerBuilder<string, GenericRecord>(new ConsumerConfig { BootstrapServers = bootstrapServers, GroupId = groupName })
.SetKeyDeserializer(new AsyncAvroDeserializer<string>(schemaRegistry).AsSyncOverAsync())
.SetValueDeserializer(new AsyncAvroDeserializer<GenericRecord>(schemaRegistry).AsSyncOverAsync())
.SetErrorHandler((_, e) => Console.WriteLine($"Error: {e.Reason}"))
.Build())
{
consumer.Subscribe(topicName);
try
{
while (true)
{
try
{
var consumeResult = consumer.Consume();
Console.WriteLine($"Key: {consumeResult.Message.Key}\nValue: {consumeResult.Value}");
Console.WriteLine(consumeResult.Value.Schema);
Console.WriteLine(consumeResult.Value.Schema["favorite_number"]);
}
catch (ConsumeException e)
{
Console.WriteLine($"Consume error: {e.Error.Reason}");
}
}
}
catch (OperationCanceledException)
{
// commit final offsets and leave the group.
consumer.Close();
}
}
正如您所看到的,我可以记录模式,但不知道如何获取其数据值。
Console.WriteLine(consumeResult.Value.Schema);
Console.WriteLine(consumeResult.Value.Schema["favorite_number"]);
虽然架构和数据在此对象中consumeResult.Value
:
{Schema:{“type”:“record”,“name”:“User”,“namespace”:“Confluent.Kafka.Examples.AvroSpecific”,“fields”:[{“name”:“name”,“type” “:” 串 “},{” 名称 “:” favorite_number “ ”类型“:[ ”INT“, ”空“]},{ ”名称“: ”favorite_color“, ”类型“:[ ”字符串“,” null“]}]}, 内容 :{name:sfs,favorite_number:41,favorite_color:blue,}}
我想阅读内容数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.