springboot集成kafka参考:SpringBoot集成kafka全面实战_Felix-CSDN博客_springboot集成kafka
一下为我自己理解的几个名词的理解,如有错误的地方欢迎指出改正;
名称 | 含义 | |
topic | 主题,可以区分不同业务; | |
分区 | kafka中主题的分布式存储策略; 生产者发送消息时,可以指定分区或key,或者使用自定义分区策略; | 生产者将消息发送给kafka服务器,服务器根据主题分区及策略将消息分别发物理防止于不同的分区中; |
分区副本 | 数据文本及备份 | 数据备份, --是的 |
key | key标识,生产者可以指定key,kafka服务器正对相同的key会把消息分到相同的分区 | |
生产者 | ||
消费者/ 消费者ID | 可以指定消费者ID,不指定则自动生成;唯一; | |
消费者组 | 广播和单播(轮播)的区分点; 如消费者不指定消费组,则属于默认消费组; 广播:指定消费者属于不同的消费组; 单播/轮播:指定消费者为相同的消费组; | |
broker | kafkaServer/brokerID |
测试问题:
1、不同消费者监听不同/相同的分组下相同的分区->分区中有的消息,被监听不同组的消费者消费;(在其他资料上看到,同一个主题下的分区,每个分区只能被一个消费者消费,难道不是强制约束?因为在相同消费组下消费相同分区,就等于重复消费的概念,和不同分组的广播的一样的,但感觉有点畸形。TODO)
服务搭建:
windows版本:
参考自:windows10下Kafka环境搭建_tianmanchn的博客-CSDN博客_kafka windows安装
问题:kafka启动报log问题可以使用kafka_2.12-2.8.1版本,使用其他几个版本都会有这个问题;
windows下kafka常用命令参考:
windows下kafka常用命令行_高亮博客-CSDN博客_kafka windows 命令
删除命令修复:kafka-topics.bat --zookeeper localhost:2181 --delete --topic topic_name
删除命令:如果topic没有使用过则会被彻底删除,如果之前使用过则会被标记为删除状态,并不会彻底删除
问题:
1:如果删除了topic(标记为删除)则再启动是会报错,参考:
Kafka报错ERROR Shutdown broker because all log dirs in ... have failed - 一介桃白白 - 博客园
2:如果使用一下方式在windows版本下创建topic时,分区和副本数量太多会报错
@Configuration
public class KafkaInitialConfiguration {
// 创建一个名为testtopic的Topic并设置分区数为8,分区副本数为2
@Bean
public NewTopic initialTopic() {
return new NewTopic("testtopic-1",1, (short) 1 );
}
// 如果要修改分区数,只需修改配置值重启项目即可
// 修改分区数并不会导致数据的丢失,但是分区数只能增大不能减小
@Bean
public NewTopic updateTopic() {
return new NewTopic("testtopic-2",1, (short) 1 );
}
}
3、如果在项目中有一下代码,也会直接创建topic;
ListenableFuture<SendResult<String, Object>> future = kafkaTemplate.send(TOPIC_TEST, obj);
linux版本:TODO