kafka 0.8.2.0的默认序列化程序

use*_*931 10 apache-kafka

我正在使用他们的新KafkaProducer API设置Kafka生产者并获得以下错误

Exception in thread "main" org.apache.kafka.common.config.ConfigException: Missing required configuration "key.serializer" which has no default value.
at org.apache.kafka.common.config.ConfigDef.parse(ConfigDef.java:124)
at org.apache.kafka.common.config.AbstractConfig.<init>(AbstractConfig.java:48)
at org.apache.kafka.clients.producer.ProducerConfig.<init>(ProducerConfig.java:235)
at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:129)
at com.kafka.producer.App.KafkaProducer(App.java:43)
at com.kafka.producer.App.main(App.java:33)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
Run Code Online (Sandbox Code Playgroud)

似乎没有默认的序列化程序和http://kafka.apache.org/documentation.html#newproducerconfigs上的文档,我没有看到可能的值.

这个问题适用于Kafka 0.8.2.0版本

Sup*_*ghu 25

早期版本的Kafka带有默认的序列化程序,但这造成了很多混乱.

使用0.8.2,您需要自己从StringSerializer或ByteArraySerializer中选择一个序列化程序,它随API一起提供或构建您自己的.

API序列化程序可以在StringSerializer中找到:http ://kafka.apache.org/082/javadoc/org/apache/kafka/common/serialization/StringSerializer.html ByteArraySerializer:http: //kafka.apache.org/082/的javadoc /组织/阿帕奇/卡夫卡/普通/系列化/ ByteArraySerializer.html

因此,如果您要使用默认的序列化程序,那么您的解决方案是使用以下选项之一.

props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
Run Code Online (Sandbox Code Playgroud)

要么

props.put("key.serializer", "org.apache.kafka.common.serialization.ByteArraySerializer");
Run Code Online (Sandbox Code Playgroud)


小智 7

假设您需要StringSerializer,请使用:

props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,StringSerializer.class.getName());
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,StringSerializer.class.getName());

完整示例:https://github.com/CameronGregory/kafka/blob/master/TestProducer.java