在kafka中 0.10.0.0较以前的变化比较大,开始我学习之旅,本篇目介绍的主要是入门kafka
0.10.0.0后续会持续更新一些相关的kafka使用笔记。 先从环境上说,配置集群版本,版本centos7.3,kafka 0.10.0.0 ,zookeeper 3.4.9 下载地址:http://archive.apache.org/dist/ 在里面查找关于的kafka和zk的组件 集群搭建可以关注其他博客,贴出主要的内容
zk就不多说了,主要是能够ping通,然后myid的设置,分发,zk启动,安装简单,但是也有很多小细节。
kafka的安装其实也很简单,zkconnet 集群的zk依赖,其他的brokerid不能一样,因为在zkCli.sh
里能查看元数据,位置放在 ls /brokers/ids 下 基础环境搭建好了,开始关于0.10.0.0的api使用笔记。
pom.xml 注意这里,毕竟环境依赖错了,基本GG
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>0.10.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.11</artifactId>
<version>0.10.0.0</version>
</dependency>
</dependencies>
Kafka_Consumer.java
import org.apache.kafka.clients.consumer.Consumer;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;
import java.util.Arrays;
import java.util.Properties;
public class Kafka_Consumer {
public static void main(String [] args){
//这个是用来配置kafka的参数
Properties props=new Properties();
//这里不是配置zookeeper了,这个是配置bootstrap.servers
props.put("bootstrap.servers","cdh1:9092,cdh2:9092,cdh3:9092");
//这个配置组,之前我记得好像不配置可以,现在如果不配置那么不能运行
props.put("group.id","test");
//序列化
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
Consumer<String,String> consumer =new KafkaConsumer<String, String>(props);
//配置topic
consumer.subscribe(Arrays.asList("test"));
while (true) {
//这里是得到ConsumerRecords实例
ConsumerRecords<String, String> records = consumer.poll(100);
for (ConsumerRecord<String, String> record : records) {
//这个有点好,可以直接通过record.offset()得到offset的值
System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());
}
}
}
}
Kafka_Producer.java
import org.apache.kafka.clients.producer.*;
import java.util.Properties;
public class Kafka_Producer extends Thread {
public static void main(String[] args) {
//这个是用来配置kafka的参数
Properties prop = new Properties();
//这里不是配置broker.id了,这个是配置bootstrap.servers
prop.put("bootstrap.servers", "cdh1:9092,cdh2:9092,cdh3:9092");
//下面是分别配置 key和value的序列化
prop.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
prop.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
//这个地方和1.0X之前的版本有不一样的,这个是使用kafkaproducer 类来实例化
Producer<String, String> producer = new KafkaProducer<String, String>(prop);
for (int i = 0; i < 100; i++) {
//这个send 没有什么变化
producer.send(new ProducerRecord<String, String>("test", Integer.toString(i), Integer.toString(i)));
}
producer.close();
}
}