Java Kafka 2.9.1 producer 0.8.2.1编译与运行时依赖关系

Java Kafka 2.9.1 producer 0.8.2.1编译与运行时依赖关系,java,apache-kafka,kafka-producer-api,Java,Apache Kafka,Kafka Producer Api,因此,在api 0.8.2中,生产者的Kakfa配置属性发生了变化;在完成这项工作并让我的java Producer编译之后,我得到了一个异常。生产者针对的是我的Kafka_2.9.1-0.8.2.1集群的节点,我得到了关于DefaultSerializer未实例化的异常: Exception in thread "main" org.apache.kafka.common.KafkaException: Could not instantiate class kafka.serializer.

因此,在api 0.8.2中,生产者的Kakfa配置属性发生了变化;在完成这项工作并让我的java Producer编译之后,我得到了一个异常。生产者针对的是我的Kafka_2.9.1-0.8.2.1集群的节点,我得到了关于
DefaultSerializer
未实例化的异常:

Exception in thread "main" org.apache.kafka.common.KafkaException: Could not instantiate class kafka.serializer.DefaultEncoder Does it have a public no-argument constructor?
        at org.apache.kafka.common.utils.Utils.newInstance(Utils.java:235)
        at org.apache.kafka.common.config.AbstractConfig.getConfiguredInstance(AbstractConfig.java:136)
        at org.apache.kafka.clients.producer.KafkaProducer.<init>(KafkaProducer.java:216)
........

场景:在一个不起眼的教堂地下室里,一圈折叠的金属椅子上坐着各种各样的中年男性和少数女性,他们中的大多数人都戴着眼镜,看起来毫无兴趣。在靠近入口的一堵墙上,有一盒咖啡和一些半个甜甜圈依次排列在一个塑料板上,放在一张有缺口的、无盖的折叠桌上

丹尼尔:嗨,我叫丹尼尔,我是。。。(呜咽)。。。文档略读器。
小组(慢慢地):欢迎丹尼尔

那个剧本是因为我的卡夫卡问题似乎只吸引了蟋蟀,所以我在这里保持一点有趣。。。感到孤独

为我辩护,在制作人的属性设置上有10多个看似权威的kafka.apache.org文档。在几乎所有设置属性的示例中,
kafka.serializer.DefaultSerializer
都非常突出和常见,Java producer示例完全缺乏关于属性或运行示例代码的详细信息

此外,尽管名称为“default”,但此属性没有默认值,因此需要设置它。这似乎是一个愚蠢的细节,但对卡夫卡开发团队的某些人来说,它一定是有意义的

当运行用Java编写的Kafka生成器时,生成器应该从少数可用的Java特定编码器中设置编码器。前面提到的一个似乎是Scala特有的。对于您感兴趣的Java,与默认序列化程序等价的是:。如果您设置了
key.serializer
value.serializer
它应该可以工作。更好的设置方法是使用like
ProducerConfig.KEY\u SERIALIZER\u CLASS\u CONFIG
中的静态字符串

设置有点像:

import org.apache.kafka.clients.producer.KafkaProducer; 
import org.apache.kafka.clients.producer.ProducerConfig; 
import org.apache.kafka.clients.producer.ProducerRecord; 
... 
import java.util.Properties;
...
Properties props = new Properties(); 
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, 
          "172.31.22.7:9092,172.31.22.6:9092,172.31.22.5:9092,172.31.22.4:9092"); 
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, 
          "org.apache.kafka.common.serialization.ByteArraySerializer"); 
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, 
          "org.apache.kafka.common.serialization.ByteArraySerializer"); 
KafkaProducer<byte[], byte[]> producer = new KafkaProducer<>(props); 
...
import org.apache.kafka.clients.producer.KafkaProducer;
导入org.apache.kafka.clients.producer.ProducerConfig;
导入org.apache.kafka.clients.producer.ProducerRecord;
... 
导入java.util.Properties;
...
Properties props=新属性();
props.put(ProducerConfig.BOOTSTRAP\u SERVERS\u CONFIG,
"172.31.22.7:9092,172.31.22.6:9092,172.31.22.5:9092,172.31.22.4:9092"); 
props.put(ProducerConfig.KEY\u序列化程序\u类\u配置,
“org.apache.kafka.common.serialization.ByteArraySerializer”);
props.put(ProducerConfig.VALUE\u序列化程序\u类\u配置,
“org.apache.kafka.common.serialization.ByteArraySerializer”);
卡夫卡制作人=新卡夫卡制作人(道具);
...

有时。。我刚读了“快速入门”部分。。。我知道这是错的…;-)
import org.apache.kafka.clients.producer.KafkaProducer; 
import org.apache.kafka.clients.producer.ProducerConfig; 
import org.apache.kafka.clients.producer.ProducerRecord; 
... 
import java.util.Properties;
...
Properties props = new Properties(); 
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, 
          "172.31.22.7:9092,172.31.22.6:9092,172.31.22.5:9092,172.31.22.4:9092"); 
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, 
          "org.apache.kafka.common.serialization.ByteArraySerializer"); 
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, 
          "org.apache.kafka.common.serialization.ByteArraySerializer"); 
KafkaProducer<byte[], byte[]> producer = new KafkaProducer<>(props); 
...