目前,我正试图围绕卡夫卡消费者解决方案建立一些集成测试。对于同质主题,我已经做得很好了,但是测试也要求我设置一个异构的主题,而且我似乎不能正确地指定模式。
在控制面板中,我所做的是创建一个记录模式数组,如下所示:
[
{
"fields": [
{
"name": "foo",
"type": "string"
}
],
"name": "TestRecord",
"namespace": "my.test",
"type": "record"
},
{
"fields": [
{
"name": "bar",
"type": "long"
}
],
"name": "TestRecordToo",
"namespace": "my.test",
"type": "record"
}
]当我使用我们为此目的制作的自定义作者在这个主题中推送消息时,Kafka将这个数组进行了修改。原始数组变为v1,两个值变为v2和v3,因此实际上只传输最终消息格式。
如何使用将在主题中包含两种不同消息格式的架构配置本地实例?
发布于 2022-09-26 13:25:13
简单地回答这个问题--卡夫卡自己不在乎这个话题是什么。
架构只能是一种消息格式。发送数组不会注册多个模式(至少在我的经验中,我们总是在单个记录上注册)。也就是说,发送给主题或注册的格式不应该是数组中的“最终格式”,而应该是生产者序列化程序实际使用的格式。
如果您使用新的格式,那么这是一个新的版本,但是它不会改变主题中以前发送的数据,因为Kafka记录是不可变的。
但是版本只分配给每个主题。如果您确实希望主题中有不同的模式,而不仅仅是向后兼容对同一主题的修改,则需要更改主体策略。
https://stackoverflow.com/questions/73851654
复制相似问题