首页 > 解决方案 > 有没有办法从 Kafka 消息中读取任意 JSON 并将该任意 JSON 作为相同内容的 Kafka 消息转发?

问题描述

我的意图是使用 Java(更具体地说是 Quarkus 原生)从可配置流中以 JSON 格式读取任意 Kafka 消息内容,将其持久化,然后最终使用初始消息中的内容将新消息写入另一个可配置流。
所有这些都无需对 JSON 内容进行反序列化,从而使其对传递的应用程序不透明。

当然,它可能是其他格式,例如 Avro,但只要我可以使代码与来自任何流的任何内容一起工作,它仍然可以解决问题。

目的是避免构建 POJO 来保存数据,因为数据可能是任何数据。

有没有办法从 Kafka 消息中读取任意 JSON 并将该任意 JSON 作为相同内容的 Kafka 消息转发?

标签: javaapache-kafkaquarkus

解决方案


根据您想要实现的目标,您可以使用以下任何策略。

使用 Kafka将消息作为字符串读取(使用String签名上的有效负载类型或 a ) 。Message<String>org.apache.kafka.common.serialization.StringDeserializer

使用 Kafka将消息作为字节数组读取(使用byte[]签名上的有效负载类型或 a ) 。Message<byte[]>org.apache.kafka.common.serialization.ByteArrayDeserializer

所有这些反序列化器都有对应的序列化器。

请查看 Kafka 指南以获取更多信息:https ://quarkus.io/guides/kafka

使用 Vert.x 将消息读取为 Vert.x JsonObject(在 Message<io.vertx.core.json.JsonObject> 的签名上使用 io.vertx.core.json.JsonObject 有效负载)io.vertx.kafka.client.serialization.JsonObjectDeserialize。此策略允许访问任意 JSON,但仍允许访问 JSON 内容。


推荐阅读