查看kafka版本java代码_windows下kafka简单使用附java代码

1.kafka下载

下载地址:http://kafka.apache.org/downloads 选择二进制版本

2.启动zookeeper

下载后解压到本地,不用修改配置

在kafka目录下打开第一个cmd命令(按住shift 在文件夹空白处右键 直接打开命令行)

(先输入 title zookeeper 可以把cmd窗口名称改为zookeeper)

输入 bin\windows\zookeeper-server-start.bat config\zookeeper.properties

d9b9d3dfee043c629059e6c697099bcd.png

zk启动成功

3.启动kafka服务

在kafka目录下新打开第二个cmd窗口

输入 bin\windows\kafka-server-start.bat config\server.properties

7f528a7defa07ca183ff1a20d53b10e9.png

kafka 服务器启动成功

4.创建topic

打开第三个cmd窗口(执行完毕可以关闭)

输入  bin\windows\kafka-topics.bat --create --zookeeper 127.0.0.1:2181 --replication-factor 1 --partitions 1 --topic test

在本地 zk 下新建一个名为 test 的 topic

(cmd下输入 bin\windows\kafka-topics.bat -list -zookeeper 127.0.0.1:2181  可列出topic)

5.启动生产者

打开第四个cmd窗口

输入 bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic test

bdd942e97e508ce9f534d3f733d3a9c8.png

生产者启动成功

6.启动消费者

打开第五个cmd窗口

输入  bin\windows\kafka-console-consumer.bat --zookeeper localhost:2181 --topic test

ab96ab70348f2a5ab33936dca459b1b8.png

消费者启动成功

7.测试

在生产者 窗口中输入任意字符串,可以在消费者窗口中看到打印的信息

2e06b3a5784793f3e824a358f23990df.png

8.JAVA 代码创建topic

依赖的JAR包

org.apache.kafka

kafka_2.12

1.1.0

org.apache.kafka

kafka-clients

1.1.0

代码

private static String TOPIC = "demo";

@Testpublic voidcreateTopic() {

Properties properties= newProperties();

properties.put("bootstrap.servers", "127.0.0.1:9092");

AdminClient client=AdminClient.create(properties);

List topics = new ArrayList();

NewTopic newTopic= new NewTopic(TOPIC, 1, (short) 1);

topics.add(newTopic);

CreateTopicsResult result=client.createTopics(topics);try{

KafkaFuture all =result.all();

all.get();

}catch (InterruptedException |ExecutionException e) {

e.printStackTrace();

}

}

运行结果

322c57e5e7482adde1ff522b3d2e2640.png

9.创建消费者

@Testpublic void consumerMsg() throwsInterruptedException {

Properties props= newProperties();//定义kakfa 服务的地址

props.put("bootstrap.servers", "127.0.0.1:9092");//制定consumer group

props.put("group.id", "test");//是否自动确认offset

props.put("enable.auto.commit", "true");//自动确认offset的时间间隔

props.put("auto.commit.interval.ms", "1000");

props.put("session.timeout.ms", "30000");//key的序列化类

props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");//value的序列化类

props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");//定义consumer

KafkaConsumer consumer = new KafkaConsumer(props);//消费者订阅的topic, 可同时订阅多个

consumer.subscribe(Arrays.asList(TOPIC));//consumer.subscribe(Arrays.asList(topic), new ConsumerRebalanceListener() {//public void onPartitionsRevoked(Collection collection) {//}//

//public void onPartitionsAssigned(Collection collection) {// //将偏移设置到最开始//consumer.seekToBeginning(collection);//}//});//final int max = 100;//List> list = new ArrayList<>();

while (true) {

ConsumerRecords records = consumer.poll(100);for (ConsumerRecordrecord : records) {

Thread.sleep(100);

System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());//list.add(record);

}//if (list.size() >= max) {//consumer.commitSync();//list.clear();//}

}

}

}

10.创建生产者

@Testpublic voidsendMsg() {

Properties props= newProperties();

props.put("bootstrap.servers", "127.0.0.1:9092");

props.put("acks", "all");

props.put("retries", 0);

props.put("batch.size", 16384);

props.put("linger.ms", 1);

props.put("buffer.memory", 33554432);

props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");

props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

Producer producer = new KafkaProducer(props);for (int i = 0; i < 100; i++) {

ProducerRecord record = new ProducerRecord<>(TOPIC, Integer.toString(i), Integer.toString(i));

producer.send(record);

}

producer.close();

}

11.运行

先运行 consumerMsg 方法,再运行 sendMsg 方法

可以看到 consumerMsg  的console 打印结果

497f8424d9dee37460ed1baceede244e.png

9ee230aa785133f43a689e33319810d8.png

排坑:

开始用了第二台机器 在二号机运行kafka,用一号机执行代码一直不能成功

kafka服务会崩(像是死循环然后内存溢出),再启动kafka 也不能启动

之后用了一个工具 ZooInspector,解压后运行build 中的 jar (推荐这个工具)

连接本地zk,把数据都删掉,再启动kafka 就可以正常启动

最后发现一号机不成功原因是端口不通但在一号机启动kafka 代码是成功的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值