我正在使用logstash avro插件。
我的客户机是一个java应用程序。我有一些使用“long”作为类型的模式,每次发送它们时,反序列化后都会看到错误的值。我想在logstashavro插件中有一些溢出。有什么解决办法吗?我不想每次都发字符串当我有很大的价值。。。
以下是我案例的代码片段。我有一个有效的.avsc架构,其中包含以下字段:
{
"name": "scoringId",
"type": "long",
},
然后我在java端使用avro生成dto,并将其转换为bytearray。我的kafka配置正常,它使用bytearrayserializer:
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, ByteArraySerializer::class.java)
在logstash conf中,我有这样的输入:
input {
kafka {
bootstrap_servers => 'kafkaserver:9092'
topics => ["bart.vector"]
codec => avro { schema_uri => "C:\logstash-6.1.2\vectorInfoDWH.avsc" }
client_id => "logstash-vector-tracking"
}
}
它使用avro插件。因此,我可以访问所有字段并获得正确的值,除了long(和时间戳,因为它们被转换为long)。
有什么想法吗?
1条答案
按热度按时间pengsaosao1#
问题是序列化和反序列化。将消息从java端转换为base64是一个解决方案。