Broker: Unknown topic or partition 问题解决

./kafka-console-producer.sh --broker-list XXX:9092 --topic kafka_test < ttt.txt

报错:Broker: Unknown topic or partition

生产者端失败重试

配置重试参数:在Kafka生产者的配置中,可以设置retries和retry.backoff.ms参数来启用重试机制。

异步发送与回调:使用异步发送消息,并在回调中处理发送失败的情况。

异常处理:在回调中对异常进行分类处理,对于可恢复的错误进行重试,对于不可恢复的错误进行日志记录或报警。

幂等性:确保生产者发送消息的逻辑是幂等的,即使消息被重复发送也不会影响系统状态。

Properties props = new Properties();

props.put("bootstrap.servers", "localhost:9092");

props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");

props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

props.put("retries", 3); // 设置重试次数

props.put("retry.backoff.ms", 1000); // 设置重试间隔

props.put("acks", "all"); // 确保消息被所有副本确认

Producer<String, String> producer = new KafkaProducer<>(props);

producer.send(new ProducerRecord<>("topic", "key", "value"), new Callback() {

@Override

public void onCompletion(RecordMetadata metadata, Exception exception) {

if (exception != null) {

// 处理发送失败的逻辑

// 可以选择重试或记录日志

}

}

});

消费者端失败重试

手动提交偏移量:设置enable.auto.commit为false,手动提交偏移量,以便在消息处理成功后才提交。

重试策略:使用SpringKafka的SeekToCurrentErrorHandler或自定义错误处理逻辑来实现重试。

死信队列:对于重试次数达到上限仍然失败的消息,发送到死信队列(DLQ)进行后续处理。

幂等性:确保消费者处理消息的逻辑是幂等的,即使消息被重复处理也不会影响系统状态。

错误处理:在处理消息时,对可能抛出的异常进行捕获和处理,根据异常类型决定是否重试。

@Bean

public ConcurrentKafkaListenerContainerFactory<String, String> kafkaListenerContainerFactory() {

ConcurrentKafkaListenerContainerFactory<String, String> factory = new ConcurrentKafkaListenerContainerFactory<>();

factory.setConsumerFactory(consumerFactory());

factory.setErrorHandler(new SeekToCurrentErrorHandler(

new DeadLetterPublishingRecoverer(kafkaTemplate()),

new FixedBackOff(3000, 3)

));

factory.getContainerProperties().setAckMode(ContainerProperties.AckMode.MANUAL);

return factory;

}

@KafkaListener(topics = "topic", containerFactory = "kafkaListenerContainerFactory")

public void listen(ConsumerRecord<String, String> record) {

try {

// 处理消息

} catch (Exception e) {

// 处理失败逻辑,消息将被重新消费

}

}

相关推荐
IT毕设梦工厂3 小时前
计算机毕业设计选题推荐:基于大数据的草鱼价格分析与可视化|毕业设计选题|计算机毕设|选题推荐|毕设指导|项目定制|源码|高质量项目
大数据·hadoop·python·数据挖掘·数据分析·课程设计·大数据毕设项目
程序员梅雨11 小时前
大数据修炼之路(二):HDFS 核心架构与面试详解
大数据·hdfs
Gl�ria11 小时前
Hive SQL 执行卡住完整排查 & 处理
hive·hadoop·sql
天若有情6731 天前
开源轻量双语工具|一键批量查询 NPM 包历史下载量,支持按作者批量统计
javascript·npm·github pages·开源工具·netlify·前端开源·npm克隆量
Q26433650231 天前
【有源码】基于文本挖掘的消费者金融投诉主题发现与风险预警研究,基于Python的CFPB消费者投诉数据可视化分析系统
大数据·hadoop·机器学习·数据挖掘·spark·毕业设计·课程设计
Q26433650231 天前
【有源码】基于机器学习的商场商铺运营分群与可视化分析研究 基于Spark的商场商铺经营效率分析与可视化
大数据·hadoop·机器学习·数据挖掘·数据分析·spark·毕业设计
Gl�ria1 天前
Hadoop MapReduce / Hive 场景:ReduceTask 热点 Key 排查
运维·hadoop·数据倾斜
Q26433650232 天前
【有源码】基于机器学习的电信网络诈骗话术语义识别与可视化分析系统 XGBoost算法+Hadoop+Spark
大数据·hadoop·算法·机器学习·spark·毕业设计·课程设计
Q26433650232 天前
【有源码】基于 Hadoop 的强化学习智能体轨迹数据挖掘与可视化分析系统大数据毕设项目
大数据·hadoop·机器学习·数据挖掘·spark·课程设计·数据可视化
Q26433650232 天前
【有源码】基于大数据的药品多维度属性分析可视化系统 基于Spark的药品属性聚类与关联规则可视化分析系统
hadoop·机器学习·数据挖掘·spark·毕业设计·课程设计·大数据项目