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()); //加载工厂类配置