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

posted @ 2021-03-03 11:38  刘百会  阅读(101)  评论(0编辑  收藏  举报