如何在logstash avro插件中传递多长时间?

时间:2018-01-29 10:42:51

标签: java apache-kafka logstash avro

我正在使用logstash avro插件。

我的客户端是一个java应用程序。我有几个使用'long'作为类型的模式,每次发送它时我都会在反序列化后看到错误的值。我想logstash avro插件中有一些溢出。 它有什么变通方法吗?每当我有很大的价值时,我都不想发送字符串...

以下是我案例的代码段。我有一个有效的.avsc架构,其中包含以下字段:

{
  "name": "scoringId",
  "type": "long",
},

然后我在java端生成了avro生成的DTO,我转换为ByteArray。  我的kafka配置没问题,它使用了ByteArraySerializer:

props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, ByteArraySerializer::class.java)

在logstash中,我有这样的输入:

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 个答案:

答案 0 :(得分:0)

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