(kafka版本 2.13-3.40)

一、消费者相关

1.1 消费组

1.1.1 查看消费组命令找不到消费组

详情: 运行以下命令后,控制台界面无任何输出

kafka-consumer-groups.sh --bootstrap-server 192.168.2.83:9092 --list

如下图:

在这里插入图片描述

解决方法: 指定消费者群组进行消费,成功消费后将自动创建所指定的消费者群组。

springboot指定消费者群组:消费者配置类添加下面代码(消费者配置类可查看springboot连接kafka

props.put(ConsumerConfig.GROUP_ID_CONFIG, "kakfa-test");

结果如图:

在这里插入图片描述

1.2 主题

1.2.1 kafka默认主题_consumer_offsets 不小心删除

详情: 删除了_consumer_offsets主题

如下图:

在这里插入图片描述

解决方法

  • 重新创建主题 __consumer_offsets
bin/kafka-topics.sh --bootstrap-server 192.168.2.86:9092 --topic __consumer_offsets --create
  • 重启kafka服务

  • 进行查看

    结果如图,可以看到主题__consumer_offsets: 在这里插入图片描述

不成功的检查一下 kafka 服务配置 ,添加:

auto.create.topic.enable=true

二、发布者相关

三、Spring Boot连接相关

3.1 消费者相关

3.1.1 连接报错

详情: springboot启动后连接kafka集群报错:协调器不正确,标记协调器未知。

Request joining group due to: rebalance failed due to 'This is not the correct coordinator.' (NotCoordinatorException)

如下图:

在这里插入图片描述

解决方法

该问题出现原因一般是因为消费者类配置不正确,或提供group id 有问题。若不清楚group id请显示的指定分区,避免将错误的group id写入。

 @KafkaListener(topicPartitions  =   { @TopicPartition(topic = "kafka-topic-test", partitions = { "0", "8" })
    })

3.1.1.2 消费报错

详情: 消费成功,但报错 This error handler cannot process 'org.apache.kafka.common.errors.InvalidGroupIdException's; no record information is available

如下图: 在这里插入图片描述

解决方法

这个提示很明显,没有提供可用的 group id。我们只需要在消费者配置中设置一个即可,这个错误的原因是未设置group id,但又使用了subscribe(topic) 或基于 Kafka 的偏移量管理策略使用组管理功能引起。

3.1.3 数据过期

报错信息org.apache.kafka.common.errors.TimeoutException: Expiring 10 record(s) for 主题名-0:120013 ms has passed since batch creation

报错原因:某些记录放入队列的速度比从客户端发送的速度快。 原因分析:生产者发送消息时,它们会存储在缓冲区中(在将它们发送到目标代理之前),并且记录会分组在一起以提高吞吐量。当新记录添加到批次中时,必须在可配置的时间窗口内发送,该时间窗口由 控制request.timeout.ms(默认设置为 30 秒)。如果批次在队列中的时间较长,则会抛出TimeoutException ,然后批次将记录从队列中删除,并且不会传递给代理。 解决方法: 增加 request.timeout.ms 的值,或者 减少 batch.size的值,然后使 linger.ms 为 0 ,重启 kafka

备注:如果这些都无效!兄弟,你得看看网络了。