简体   繁体   English

为二进制值设置 VALUE_SERIALIZER_CLASS_CONFIG

[英]Set VALUE_SERIALIZER_CLASS_CONFIG for binary value

I get this error when I attempt to execute my Kafka producer application:当我尝试执行我的 Kafka 生产者应用程序时出现此错误:

Exception in thread "main" org.apache.kafka.common.errors.SerializationException: Can't convert value of class [B to class org.apache.kafka.common.serialization.IntegerSerializer specified in value.serializer Caused by: java.lang.ClassCastException: [B cannot be cast to java.lang.Integer at org.apache.kafka.common.serialization.IntegerSerializer.serialize(IntegerSerializer.java:19) at org.apache.kafka.common.serialization.Serializer.serialize(Serializer.java:62) at org.apache.kafka.clients.producer.KafkaProducer.doSend(KafkaProducer.java:894) at org.apache.kafka.clients.producer.KafkaProduc Exception in thread "main" org.apache.kafka.common.errors.SerializationException: Can't convert value of class [B to class org.apache.kafka.common.serialization.IntegerSerializer specified in value.serializer Caused by: java. lang.ClassCastException: [B cannot be cast to java.lang.Integer at org.apache.kafka.common.serialization.IntegerSerializer.serialize(IntegerSerializer.java:19) at org.apache.kafka.common.serialization.Serializer.serialize (Serializer.java:62) at org.apache.kafka.clients.producer.KafkaProducer.doSend(KafkaProducer.java:894) at org.apache.kafka.clients.producer.KafkaProduc er.send(KafkaProducer.java:856) at org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:743) at com.cme.pe.ProducerDemo.main(ProducerDemo.java:50) er.send(KafkaProducer.java:856) at org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:743) at com.cme.pe.ProducerDemo.main(ProducerDemo.java:50)

The issue is that my VALUE_SERIALIZER_CLASS_CONFIG property is StringSerializer but my KafkaProducer and Producer record have a binary value问题是我的VALUE_SERIALIZER_CLASS_CONFIG属性是StringSerializer但我的KafkaProducerProducer record具有二进制值

properties.setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());

KafkaProducer<String, byte[]> producer = new KafkaProducer<String, byte[]>(properties);
        
ProducerRecord<String, byte[]> record = new ProducerRecord<String, byte[]>("foo", allBytes);

What should my VALUE_SERIALIZER_CLASS_CONFIG be set to for this?我的VALUE_SERIALIZER_CLASS_CONFIG应该为此设置什么?

ByteArraySerializer.class.getName()

The line should be该行应该是

properties.setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, ByteArraySerializer.class.getName());

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM