我正在尝试在kafka的经纪人中发送序列化的对象
public void sendRsvpMessage(WebSocketMessage<?> message) {
RSVP rsvpMsg = gson.fromJson(message.getPayload().toString(), RSVP.class);
System.out.println("rsvpMsg Object: "+rsvpMsg);
if (rsvpMsg.response.equals("yes")) {
producer.anOutputYes().send(MessageBuilder.withPayload(rsvpMsg).build());
}
else {
producer.anOutputNo().send(MessageBuilder.withPayload(rsvpMsg).build());
}
}
RsvpSerializer.class
public class RsvpSerializer implements Serializer<Object> {
@Override
public void configure(Map var1, boolean var2) {
// TODO Auto-generated method stub
}
@Override
public byte[] serialize(String s, Object o) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(o);
oos.close();
byte[] b = baos.toByteArray();
return b;
} catch (IOException e) {
return new byte[0];
}
}
@Override
public void close() throws IOException {
// TODO Auto-generated method stub
}
}
应用.properties
spring.cloud.stream.kafka.binder.zkNodes=localhost:2181
spring.cloud.stream.kafka.binder.brokers=localhost:9093
spring.cloud.stream.bindings.output.content-type=text/plain
spring.cloud.stream.bindings.output.producer.headerMode=raw
spring.kafka.producer.value-serializer: com.rsvps.serializer.RsvpSerializer
server.port=8081
出现以下错误:
2020-11-01 14:59:07.583 INFO 11179 --- [ask-scheduler-1] o.a.k.clients.producer.KafkaProducer : [Producer clientId=producer-50] Closing the Kafka producer with timeoutMillis = 0 ms.
2020-11-01 14:59:07.584 ERROR 11179 --- [ask-scheduler-1] o.s.c.s.b.k.p.KafkaTopicProvisioner : Cannot initialize Binder
org.apache.kafka.common.KafkaException: Failed to construct kafka producer
at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:441) ~[kafka-clients-1.0.1.jar:na]
at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:285) ~[kafka-clients-1.0.1.jar:na]
at org.springframework.kafka.core.DefaultKafkaProducerFactory.createKafkaProducer(DefaultKafkaProducerFactory.java:225) ~[spring-kafka-2.1.6.RELEASE.jar:2.1.6.RELEASE]
请问,为什么会出现此错误?序列化对象时发生什么错误了?
但是,如果我从application.properties文件中删除我的序列化程序属性,它可以正常运行,并在控制台中使用以下属性显示它。
value.serializer = class org.apache.kafka.common.serialization.ByteArraySerializer
请提出建议,我该如何使用自己的序列化程序?