Apache Kafka 基本操作

参考 https://www.w3cschool.cn/apache_kafka/apache_kafka_basic_operations.html


先搞个单节点单代理的配置。需要配置好java zookeeper kafka。需要先启动zookeeper,因为kafka需要它!

1 zookeeper启动

/kafka/bin目录中命令
sudo bin/zookeeper-server-start.sh config/zookeeper.properties
这时会有bug启动不了。
java找不到kafka-run-class.sh: line 309: exec: java: not found。
办法:
sudo ln -s ~/Desktop/jdk-16.0.2 /usr/bin/java
之后 再进行启动,成功。

在这里插入图片描述

2 kafka broker 启动

sudo bin/kafka-server-start.sh config/server.properties

发现拒绝连接?

在这里插入图片描述
我的办法是:
改了下zookeeper.properties的dataDir,重试成功。
搞下算是启动了,好些打印信息,kafa server.properties里面参数非常多。目测上百个吧。

在这里插入图片描述

输个jps也跑不了,不知为何?
链接中的提到的消息,也看不到。
821 QuorumPeerMain zookeeper守护进行
928 Kafka kafka守护进程
931 Jps

windows下的测试
在这里插入图片描述

2.1 单节点单代理配置

创建两个主题
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic kftopic_game1
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic kftopicgame2
列出创建的主题
bin/kafka-topics.sh --list --zookeeper localhost:2181
在这里插入图片描述

在/tmp/kafka-logs文件夹中可以看到上面创建的主题
在这里插入图片描述

2.1.1 启动生产者发送消息

语法
sudo bin/kafka-console-producer.sh --broker-list localhost:9092 --topic topic-name
sudo bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic topic-name

sudo bin/kafka-console-producer.sh --broker-list locahost:9092 --topic kftopicgame2
sudo bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic kftopic
–broker-list 代理代表可有多个,端口为9092或其它
启动后,stdin会等待用户输入消息并发布至kafka集群,我输入了两消息。
在这里插入图片描述
这时再到主题目录下发现在log文件有内容了。
在这里插入图片描述

2.1.2 启动消费者接收消息

语法
sudo bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic topicname --from-beginning

sudo bin/kafka-console-consumer.sh --bootstrap-server localhost:9202 --topic kftopicgame2 --from-beginning
同样的消息发过去,消费端不会打印输出
在这里插入图片描述

2.2 单节点多代理配置

先启动zookeeper服务器
复制server.properties到两个新的配置文件中sever-1.properies server-2.properties。并进行修改。
server-1.properties
broker.id=1
port=9093
log-dir=/tmp/kafka-logs-1
server-2.properties

broker.id=2
port=9094
log-dir=/tmp/kafka-logs-2
启动多个代理
broker1
bin/kafka-server-start.sh config/server.properties
broker2
bin/kafka-srever-start.sh config/server-1.properties
broker3
bin/kafka-server-start.sh config/server-2.properties
现在有三个代理在运行着。

我们现在有3个不同的代理,可以将复制因子值指定为3个。如果是2个或n个代理可指定2或n个。
sudo bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic kfmultitopic
可以查看哪个代理正是侦听当前创建的主题
sudo bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic kfmultitopic1
在这里插入图片描述
sudo bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic kfmultitopic1
输出如下

zhaox@ubuntu:~/Desktop/kafka/kafka_2.12-2.8.0$ sudo bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic kfmultitopic1
Topic: kfmultitopic1	TopicId: g6zv00s6QkWP2d4Ey5hciw	PartitionCount: 1	ReplicationFactor: 3	Configs: 
	Topic: kfmultitopic1	Partition: 0	Leader: 0	Replicas: 0,1,2	Isr: 0,1,2
zhaox@ubuntu:~/Desktop/kafka/kafka_2.12-2.8.0$ 

第一行给出的是主题摘要,主题名称及id,分区数,复制因子。第二行是分区的随机选择部分的领导者。
第二行中的 Leader:0 表明(borker.id=0)的是领导者,Replicas:0,1,2 意味着所有代表复制主题,最后Isr是in-sync副本的集合。这是副本的子集,当前活着。

2.2.1 启动生产者发送消息

这个过程跟单节点的配置相同。
sudo bin/kafka-console-producer.sh --borker-list localhost:9092 localhost:9093 localhost:9094 --topic kfmultitopic1

2.2.2 启动消费者消费消息

这个过程跟单节点的配置相同。
sudo bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic kfmultitopic1 --from-beginning
sudo bin/kafka-console-consumer.sh --bootstrap-server loalhost:9092 --topic kfmtopic --from-beginning
又试了下 换了个主题kfmtopic发现是好使的。在虚拟机下消息有些慢。
sudo bin/kafka-console-consumer.sh --bootstrap-server localhost:9093 --topic kfmtopic --from-beginning
在这里插入图片描述

2.2.3 删除主题

有个主题不想要了,刚才也建错了可以删除
sudo bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic kfmultitopics1
在这里插入图片描述
这时再describe主题信息则已经删除
在这里插入图片描述

2.2.4 修改主题

sudo bin/kafka-topics.sh --zookeeper localhost:2181 --alter topic kfmtopic --partitions 2
结果成功了
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值