【发布时间】:2017-04-29 17:50:20
【问题描述】:
我有我的自定义 Java 对象并希望利用 JVM 的内置序列化将其发送到 Kafka 主题,但序列化失败并出现以下错误
org.apache.kafka.common.errors.SerializationException: 无法转换 com.spring.kafka.Payload 类的值到类 org.apache.kafka.common.serialization.ByteArraySerializer 中指定 value.serializer
Payload.java
public class Payload implements Serializable {
private static final long serialVersionUID = 123L;
private String name="vinod";
private int anInt = 5;
private Double aDouble = new Double("5.0");
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAnInt() {
return anInt;
}
public void setAnInt(int anInt) {
this.anInt = anInt;
}
public Double getaDouble() {
return aDouble;
}
public void setaDouble(Double aDouble) {
this.aDouble = aDouble;
}
}
在创建生产者期间,我设置了以下属性
<entry key="key.serializer"
value="org.apache.kafka.common.serialization.ByteArraySerializer" />
<entry key="value.serializer"
value="org.apache.kafka.common.serialization.ByteArraySerializer" />
我的发送调用如下
kafkaProducer.send(new ProducerRecord<String, Payload>("test", new Payload()));
通过生产者将自定义 java 对象发送到 kafka 主题的正确方法是什么?
【问题讨论】:
-
其他选项是转换为 JSON 格式并发送
标签: java serialization apache-kafka