Avro C和librdkafka-消费者实施;获取NULL以解析字段的值-始终

时间:2020-01-07 17:34:53

标签: c avro librdkafka

代码示例

KEY = (char *)malloc(sizeof(argRkMessage->key)+1);
    if( KEY != NULL )
    {
       //Logger
    }
    reader_class = avro_generic_class_from_schema(KEYSchema);
    check_i(avro_generic_value_new(reader_class, &val));
    /*Send the memory in the buffer into the reader*/
    nested_reader = avro_reader_memory( argRkMessage->key, sizeof(argRkMessage->key) );
    check_i(avro_value_read( nested_reader, &val ));
    type = avro_value_get_type(&val);
    if ( type == AVRO_RECORD )
    {
//logger
    }
    check_i(avro_value_get_size(&val, &field_count));
    check_i(avro_value_get_by_name(&val, "Key", &field, NULL));
    type = avro_value_get_type(&field);
    if ( type == AVRO_STRING )
    {
//logger
    }
    check_i(avro_value_get_string(&field, &KEY, &size));


printf(“Key is:%s", KEY);

我的问题是“ KEY”总是变成NULL字符串。

我确实尝试了一种解决方案,以对似乎具有该值的argRkMessage-> key的内容进行十六进制转储。

我正在使用librdkafka和avro.c来实现这一点。该示例代码是C-Kafka消费者流程的精简版,旨在获取以AVRO格式编码的复杂Kafka消息。

0 个答案:

没有答案