如何在logstashavro插件中度过漫长的时光?

hrysbysz  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(205)

我正在使用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)。
有什么想法吗?

pengsaosao

pengsaosao1#

问题是序列化和反序列化。将消息从java端转换为base64是一个解决方案。

相关问题