具有属性类型的 Kafka 序列化
我们正在启动一个基于 Quarkus 的新项目,在 Kafka 上写入记录。
实际上,有一个旧的应用程序可以写入一些记录并且运行良好。
我们的新应用程序在测试主题上写入相同的记录时遇到问题。我们在 JSON 中看不到属性的类型。
让我举个例子:
旧应用程序编写属性如下:
{
...
"businesscode":
{
"string": "I2022416535"
},
...
}
新应用程序编写属性如下:
{
...
"businesscode": "I2022416535"
...
}
这是 string
属性的示例,但我们对 int 也有同样的问题
、map
、array
等属性类型。
用于测试的主题与旧应用程序主题具有相同的特征,我们使用相同的 Avro 文件和相同的生成对象。
我应该怎么做才能解决这个问题?
We are starting a new project based on Quarkus to write records on Kafka.
Actually, there is an old app writing some records and it works fine.
Our new app has a problem writing the same records on a test topic. We can not see the types of attributes in the JSON.
Let me give an example:
The old app writes the attributes as follows:
{
...
"businesscode":
{
"string": "I2022416535"
},
...
}
The new app writes the attributes as follows:
{
...
"businesscode": "I2022416535"
...
}
This is an example for a string
attribute but we have the same problem with int
, map
, array
, etc. attribute types.
The used topic for tests has the same characteristics as the old app topic, and we use the same Avro file and same the generated objects.
What should I do to fix the problem?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
问题出在 Avro 转换上。 Avro JSON 编码规定了可空/联合字段使用的类型。
https://avro.apache.org/docs/current/spec.html# json_encoding
否则,您的 JSON 库至少应该能够区分对象(映射)、数组、整数、字符串、布尔值和空值之间的差异。
The problem lies in the Avro conversion. Avro JSON encoding states the type to be used for nullable/union fields.
https://avro.apache.org/docs/current/spec.html#json_encoding
Otherwise, your JSON libraries should at least be able to tell differences between Objects (Maps), Arrays, Ints, Strings, Boolean, and nulls.