Kafka学习

1、kafka集群配置

        ①需要提前配置zookeeper环境

        ②配置环境变量,与Java类似

        ③配置server.properties文件

# 服务器序号
broker.id=num
listeners=PLAINTEXT://IP:9092
# 文件缓存目录
log.dirs=/usr/kafka/data
# zookeeper链接
zookeeper.connect=host1:2181,host2:2181,host3:2181

        ④启动

nohup bin/kafka-server-start.sh config/server.properties &

        ⑤停止

./kafka-server-stop.sh

2、kafka主题

        ①创建主题

bin/kafka-topics.sh --create --bootstrap-server IP:9092 --topic topicName

bin/kafka-topics.sh --zookeeper IP1:2181,IP2:2181,IP3:2181 --create --replication-factor 2 --partitions 3 --topic topicName

        ②查看所有主题

bin/kafka-topics.sh --list --bootstarp-server IP:9092

bin/kafka-topics.sh --zookeeper IP1:2181,IP2:2181,IP3:2181 --list

        ③查看单一主题

bin/kafka-topics.sh --zookeeper IP1:2181,IP2:2181,IP3:2181 --describe --topic topicName

        ④创建生产者

bin/kafka-console-producer.sh --broker-list IP1:9092,IP2:9092,IP3:9092 --topic topicName

        ⑤创建消费者

bin/kafka-console-consumer.sh --bootatrap-server IP:9092 --topic topicName --from-beginning

bin/kafka-console-consumer.sh --zookeeper IP1:2181,IP2:2181,IP3:2181 --from-beginning --topic topicName

        ⑥查看消费者

## 消费者列表查询(存储在zk中的)
bin/kafka-consumer-groups.sh --zookeeper localhost:2181 --list

## 消费者列表查询(支持0.9版本+)
bin/kafka-consumer-groups.sh --new-consumer --bootstrap-server localhost:9092 --list

## 消费者列表查询(支持0.10版本+)
bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list

//查看消费者详细
kafka-consumer-groups.sh --bootstrap-server 192.168.100.77:9092 --describe --group groupname
# CURRENT-OFFSET  这是当前已经消费了的偏移量
# LAG  这是消息积压数量

     3、kafka结合Java在springboot中配置

①application.properties文件生产者相关配置

kafka.bootstrap-servers=kafka服务地址和端口
kafka.producer.retries=写入失败时重试次数,当leader节点失效,一个repli节点会替代成为leader节点,此时可能出现写入失败。
kafka.producer.batch.size=一次批处理数据大小,单位字节
kafka.producer.linger=延迟时间,收到消息后等待一个延迟时间就会发送
kafka.producer.buffer.memory=缓存消息缓冲区大小,单位字节
kafka.producer.request.timeout.ms=当producer发送请求给broker后,broker需要在规定时间范围内将处理结果返回给producer。超时时间默认30s。

spring.kafka.producer.acks    //acks=0,producer只发送消息,不等待broker返回;acks=1,leader broker将消息写入日志就向producer返回;acks=-1||all,leader broker等待所有副本都将消息写入日志再返回给producer


ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG  //生产者key序列化
ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG  //生产者值序列化

②springboot为kafka提供了自动配置,spring中需要使用注解@EnableKafka

③Kafka消费者相关配置

ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG  //broker地址和端口
ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG  //为true自动提交偏移量
ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG //自动提交偏移量周期,单位毫秒
ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG  //会话响应超时时间
ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG  //key序列化配置,常用StringDeserializer反序列化类
ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG  //value反序列化配置

④ConcurrentKafkaListenerContainerFactory类用于消费者配置

ConcurrentKafkaListenerContainerFactory<> factory = new ConcurrentKafkaListenerContainerFactory<>();
factory.setConcurrency(n); //设置并发数
factory.setConsumerFactory(consumerFactory());  //加载工厂类配置 
 
 

你可能感兴趣的:(kafka,学习,分布式)