在用maven引入kafka客户端时,以如下版本为例,会有两个版本号2.10 , 0.10.1.0 很让人疑惑。
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.10</artifactId>
<version>0.10.1.0</version>
</dependency>
然后在依赖lib下会产生两个jar
2.*版本的是scala客户端,1.*版本的是java客户端 ,两个都可以在java环境中使用,调用方式却有不同
scala版本的producer
val kafkaConfig =KafkaUtils.buildKafkaConfig("kafkahost",9092)val producer =newProducer[String,String](newProducerConfig(kafkaConfig))// ... somewhere in code
producer.send(newKeyedMessage[String,String]("my-topic", data))
java 版本的producer
val kafkaConfig =KafkaUtils.buildKafkaConfig("kafkahost",9092)val producer =newKafkaProducer[String,String](kafkaConfig)// ... somewhere in code
producer.send(newProducerRecord[String,String]("my-topic", data))
到底改用哪种方式呢?原来这两种方式是新老两种api。scala版本是老的api,java版本是新的api。官方推荐使用java版本。
官方解释如下
“We are in the process of rewritting the JVM clients for Kafka. As of 0.8.2 Kafka includes a newly rewritten Java producer. The next release will include an equivalent Java consumer. These new clients are meant to supplant the existing Scala clients, but for compatability they will co-exist for some time. These clients are available in a seperate jar with minimal dependencies, while the old Scala clients remain packaged with the server.”
具体参见:http://kafka.apache.org/082/documentation.html#producerapi