Postgresql 如何处理卡夫卡中的动态消息值?
我很难实现卡夫卡的动态消息值功能。我正在使用Postgresql 如何处理卡夫卡中的动态消息值?,postgresql,jdbc,apache-kafka,apache-kafka-connect,Postgresql,Jdbc,Apache Kafka,Apache Kafka Connect,我很难实现卡夫卡的动态消息值功能。我正在使用confluent kafka python中的AvroProducer以及schema registry。制作人将以如下格式发送消息: {'id':1, 'name':'A', 'properties': {'key1': 'value1', 'key2': 'value2', 'key2': 'value3'}}, {'id': 2, 'name': 'X', 'properties': {'key1': 'value1'}} 属性在不同消息之
confluent kafka python
中的AvroProducer
以及schema registry
。制作人将以如下格式发送消息:
{'id':1, 'name':'A', 'properties': {'key1': 'value1', 'key2': 'value2', 'key2': 'value3'}},
{'id': 2, 'name': 'X', 'properties': {'key1': 'value1'}}
属性在不同消息之间可能有所不同。因此,有些可能有更多的键、值对,而有些可能有更少的键、值对。我正在尝试使用Kafka connect将此消息从Kafka发送到postgresql
。我希望properties
成为json
输入postgresql
数据库
如何做到这一点?任何指点都将非常感激。谢谢 对于您的示例,一个声明数组的模式就足够了。例如,在AVRO中,模式定义如下所示:
{
"name": "MyRecord",
"type":"record",
"fields":[
{
"name":"id",
"type":"long"
},
{
"name":"name",
"type":"string"
},
{
"name":"properties",
"type": "array",
"items":{
"name":"mykvprop",
"type":"record",
"fields":[
{
"name":"key",
"type":"string"
},
{
"name":"value",
"type":"string"
}
]
}
}
]
}
如果您的消息因数据类型而异,那么您需要一个更复杂的解决方案,使用AVRO联合、多模式主题或两者兼有。例如,如果属性数组的键和值不是全部字符串。更多信息:
如果使用Kafka Connect API而不是Kafka Producer API,这些高级情况会变得复杂,因为Connect API的内部模式似乎限制了您的选择。对于您的示例,一个声明数组的模式就足够了。例如,在AVRO中,模式定义如下所示:
{
"name": "MyRecord",
"type":"record",
"fields":[
{
"name":"id",
"type":"long"
},
{
"name":"name",
"type":"string"
},
{
"name":"properties",
"type": "array",
"items":{
"name":"mykvprop",
"type":"record",
"fields":[
{
"name":"key",
"type":"string"
},
{
"name":"value",
"type":"string"
}
]
}
}
]
}
如果您的消息因数据类型而异,那么您需要一个更复杂的解决方案,使用AVRO联合、多模式主题或两者兼有。例如,如果属性数组的键和值不是全部字符串。更多信息:
如果使用Kafka Connect API而不是Kafka Producer API,这些高级情况会变得复杂,因为Connect API的内部模式似乎会限制您的选项