我目前正在尝试围绕一个Kafka消费者解决方案进行一些集成测试。我已经很好地处理了同质主题,但是测试还要求我设置一个异质主题,并且我似乎无法正确地指定模式。
我在控制面板中所做的是创建一个记录模式数组,如下所示:
[
{
"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,因此实际只传输最终的消息格式。
如何使用在一个主题中包含两种不同消息格式的模式配置我的本地示例?
1条答案
按热度按时间vawmfj5a1#
简单地回答这个问题--Kafka本身并不关心主题是什么。
架构只能是一种消息格式。发送数组不会注册多个模式(至少在我的经验中,我们总是在单个记录上注册)。也就是说,发送到主题或注册的格式不应该是数组中的“最后一个”,而应该是生产者序列化程序实际使用的格式。
如果你使用新的格式,那么这就是一个新的版本,但它不会改变主题中以前发送的数据,因为Kafka记录是不可变的。
但版本只针对每个主题进行分配。如果您确实希望在一个主题中使用不同的模式,而不仅仅是对同一主题进行向后兼容的修改,则需要更改主题策略。