springboot整合kafka、kafka学习
kafka学习
1、docker部署kafka
KAFKA_PORT 9092
KAFKA_ADVERTISED_HOST_NAME 10.138.130.1
KAFKA_ZOOKEEPER_CONNECT 10.138.130.1:30512
KAFKA_ADVERTISED_PORT 9092
注意:对外暴露端口
虚拟机部署
部署zookeeper
docker run -d --name zookeeper --network host -e ALLOW_ANONYMOUS_LOGIN=yes zookeeper:3.4
部署kafka:
docker run -d --name kafka --network host --restart=always -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.105.135:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.105.135:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka:2.13-2.8.1
参数说明:
-e KAFKA_BROKER_ID=0 在kafka集群中,每个kafka都有一个BROKER_ID来区分自己
-e KAFKA_ZOOKEEPER_CONNECT=172.16.0.13:2181/kafka 配置zookeeper管理kafka的路径172.16.0.13:2181/kafka
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.16.0.13:9092 把kafka的地址端口注册给zookeeper,如果是远程访问要改成外网IP,类如Java程序访问出现无法连接。
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 配置kafka的监听端口
-v /etc/localtime:/etc/localtime 容器时间同步虚拟机的时间
--env KAFKA_ADVERTISED_HOST_NAME 改为宿主机器的IP地址,如果不这么设置,可能会导致在别的机器上访问不到kafka。
--env KAFKA_ZOOKEEPER_CONNECT 设置zookeeper主机
--env KAFKA_ADVERTISED_PORT kafka端口
验证kafka是否可以使用
进入容器
$ docker exec -it kafka bash
进入 /opt/kafka_2.12-2.3.0/bin/ 目录下
$ cd /opt/kafka_2.12-2.3.0/bin/
或者
$ cd /opt/kafka/bin/
运行kafka生产者发送消息
$ ./kafka-console-producer.sh --broker-list localhost:9092 --topic sun
发送消息
> {"datas":[{"channel":"","metric":"temperature","producer":"ijinus","sn":"IJA0101-00002245","time":"1543207156000","value":"80"}],"ver":"1.0"}
运行kafka消费者接收消息
$ ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic sun --from-beginning
列出所有topics (在本地kafka路径下)
$ bin/kafka-topics.sh --zookeeper localhost:2181 --list
列出所有Kafka brokers
$ docker exec zookeeper bin/zkCli.sh ls /brokers/ids
2、springboot配置文件
kafka: bootstrap-servers: 10.138.130.1:34862 consumer-group: iot-influxdb-worker #一次最大拉取的数量 max-poll-records: 1000
3、名词解释
参考:https://www.orchome.com/kafka/index
概念:https://codenotfound.com/spring-kafka-consumer-producer-example.html
常用命令:参考https://www.cnblogs.com/dalianpai/p/13789351.html
常见错误解析:https://blog.csdn.net/gy13477001651/article/details/106502548/
kafka下载地址:https://www.kafkatool.com/download.html
kafka消息队列的两种模式:
点到点、发布订阅模式
kafka发送过程
kafak如何提高吞吐量:
kafka数据可靠性:
kafka 幂等性
kafka事务
kafka消费模式:
拉模式和推模式,使用拉模式
kafka消费者初始化流程:
kafka消费者流程
kafka分区策略
kafka的offset
手动提交和自动提交
指定offset消费、指定时间消费
kafka如何提高消费的吞吐量:增加分区、增加拉取数量
kafka常用命令:
查看消息积压数:
./kafka-consumer-groups.sh --bootstrap-server 41.6.251.4:9092 --describe --group zygh-vehicle-pass
查询消费者组:
./kafka-consumer-groups.sh --bootstrap-server 41.6.251.4:9092 --list
查看topic
./kafka-topics.sh --bootstrap-server 41.6.251.4:9092 --list
参考学习视频:https://www.bilibili.com/video/BV1vr4y1677k/?p=19&spm_id_from=pageDriver