繁体   English   中英

如何在汇合kafka C#中读取GenericRecord特定数据

[英]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,}}

我想阅读内容数据。

content无法访问

我认为Value.contents不是你想要的。 特别是因为你提到的那个属性是private

getter被定义为字典 - 源代码

尝试consumeResult.Value["favorite_number"]


当您执行consumeResult.Value.Schema["favorite_number"] ,您将获得架构中的Field对象,而不是外部记录中字段的值。 - 源代码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM