0

尝试在 .net 中为 kafka 消息实现 avro 序列化和反序列化。消息模型如下。

public class SampleMessage
{
    public string Hash{ get; set; }
    public string FileName { get; set; }
    public string Data { get; set; }
    public Dictionary<string, string> Content { get; set; }
    public string LineDetails { get; set; }
}

那么,是否可以在 C# 中为Dictionary创建 Avro 模式?

4

1 回答 1

1

是的。为此,您应该使用复杂类型“地图”(https://avro.apache.org/docs/current/spec.html#Maps

地图使用类型名称“map”并支持一个属性:

values : 地图值的模式。

映射被假定为字符串。

举个例子,你的 .avsc 看起来像这样:

{
    "type": "record",
    "name": "SampleMessage",
    "namespace": "samplemessage",
    "fields": [
        {
            "name": "hash",
            "type": "string"
        },
        {
            "name": "fileName",
            "type": "string"
        },
        {
            "name": "data",
            "type": "string"
        },
        {
            "name": "content",
            "type": {
                "type": "map",
                "values": "string"
            }
        },
        {
            "name": "lineDetails",
            "type": "string"
        }
    ]
}
于 2021-07-20T11:55:12.103 回答