卡夫卡序列化程序JSON
我不熟悉卡夫卡、序列化和JSON 我想要的是生产者通过kafka发送一个JSON文件,消费者以原始文件形式使用JSON文件 我能够得到它,因此JSON被转换成字符串并通过字符串序列化程序发送,然后消费者将解析字符串并重新创建JSON对象,但我担心这不是有效的或正确的方法(可能会丢失JSON的字段类型) 因此,我研究了如何制作JSON序列化程序,并在我的生产者配置中进行设置 我在这里使用了JsonEncoder: 但是当我现在尝试运行我的producer时,似乎在编码器的toBytes函数中,try块从未返回任何我想要的结果卡夫卡序列化程序JSON,json,serialization,apache-kafka,kafka-producer-api,Json,Serialization,Apache Kafka,Kafka Producer Api,我不熟悉卡夫卡、序列化和JSON 我想要的是生产者通过kafka发送一个JSON文件,消费者以原始文件形式使用JSON文件 我能够得到它,因此JSON被转换成字符串并通过字符串序列化程序发送,然后消费者将解析字符串并重新创建JSON对象,但我担心这不是有效的或正确的方法(可能会丢失JSON的字段类型) 因此,我研究了如何制作JSON序列化程序,并在我的生产者配置中进行设置 我在这里使用了JsonEncoder: 但是当我现在尝试运行我的producer时,似乎在编码器的toBytes函数中,tr
try {
bytes = objectMapper.writeValueAsString(object).getBytes();
} catch (JsonProcessingException e) {
logger.error(String.format("Json processing failed for object: %s", object.getClass().getName()), e);
}
似乎objectMapper.writeValueAsString(object.getBytes()
;获取我的JSON obj({“name”:“Kate”,“age”:25}
)并将其转换为零
这是我的制作人的跑步功能
List<KeyedMessage<String,JSONObject>> msgList=new ArrayList<KeyedMessage<String,JSONObject>>();
JSONObject record = new JSONObject();
record.put("name", "Kate");
record.put("age", 25);
msgList.add(new KeyedMessage<String, JSONObject>(topic, record));
producer.send(msgList);
List msgList=new ArrayList();
JSONObject记录=新的JSONObject();
记录。放入(“姓名”、“凯特”);
记录。投入(“年龄”,25岁);
添加(新的KeyedMessage(主题,记录));
制作人发送(msgList);
我错过了什么?我的原始方法(转换为字符串并发送,然后重建JSON obj)可以吗?还是不是正确的方式
谢谢 我建议将JSON事件字符串转换为字节数组,如:
字节[]eventBody=event.getBody() 这将提高您的性能,Kafka Consumer还提供JSON解析器,帮助您找回JSON。
如果需要更多信息,请告诉我。嗯,为什么担心序列化/反序列化步骤会导致数据丢失 您可以选择使用中包含的Kafka JSON序列化程序,这是一款免费的开源软件(免责声明:我在Confluent工作)。Its提供了一些示例来帮助您入门,更多详细信息将在中介绍。这个JSON序列化程序和模式注册表本身的好处是,它们为Kafka提供了与生产者和消费者客户端的透明集成。除了JSON,如果您需要,还可以支持ApacheAvro
在使用JSON与Kafka交谈时,从开发人员的便利性和易用性来看,这个设置是最好的选择之一——当然是YMMV 你找到解决办法了吗?在你删除的答案中,你说你意识到我有难以忍受的杰克逊罐子,所以问题为你解决了?