ERROR 220624 --- [ntainer#2-2-C-1] o.s.k.l.KafkaMessageListenerContainer : Failed to set initial

完整报错:

org.apache.kafka.common.errors.TimeoutException: Timeout of 60000ms expired before the position for partition heartbeatMessage1-2 could be determined

2021-12-03 16:17:44.253 ERROR 220624 --- [ntainer#2-1-C-1] o.s.k.l.KafkaMessageListenerContainer    : Failed to set initial offsets

org.apache.kafka.common.errors.TimeoutException: Timeout of 60000ms expired before the position for partition heartbeatMessage1-1 could be determined

我的感觉应该是分区有问题,比如只创建了一个分区,我却消费第2个分区,但是我在kafka-eagele或者kafkaTool上看都是3个分区,后面还是在kafkaEagle上面突然看到了有的是1个分区的Topic,而这是不可能的,因为我的Topic都是自己手建的,没有默认创建。

后来发现是一字之差

@Bean
    public NewTopic initialBHeartBeatMessageTopic() {
        return new NewTopic("heartBeatMessage",3, (short) 3);
    }

我创建的是heartBeatMessage,而消费的却是

@KafkaListener(groupId = "message", topicPartitions = {
            @TopicPartition(topic = "heartbeatMessage",partitions = {"0", "1","2"})
    },concurrency = "3")//concurrency就是同组下的消费者个数,就是并发消费数,建议小于等于分区总数

因为kafka没有heartbeartMessage的主题,所以会默认自己创建1个分区1个副本的主题,这样在消费的时候就会出现问题了。

关于如何关闭这个可恶的自动创建Topic功能,毕竟如果没有联想到Topic使用错误的原因,想找到这个bug还是很痛苦的,网上的说法是在kafka的server.properties中加上这句话

auto.create.topics.enable=false

不过我在配置文件中并没有找到这个配置的说明,也没有去尝试,老铁们如果有这个苦恼可以加上试试,当然别忘了所有broker的配置都要改,然后重启kafka。

有疑问可以在评论区交流,作者看见会回复。

如需转载,请一定声明原处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值