You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kafka Producer报错:无法向只读镜像主题追加记录,求排查方案

问题分析与解决

问题原因

报错Cannot append records to read-only mirror topic明确说明:你要写入的hello-topic是Kafka镜像主题(由MirrorMaker/MirrorMaker 2.0创建的跨集群同步主题),这类主题设计为只读,仅用于接收源集群同步过来的数据,不允许本地生产者直接写入。这也是消费者能正常读取(镜像主题会同步源集群的消息),但生产者写入失败的核心原因。

解决方案

1. 确认主题属性

先通过Kafka命令行工具验证主题类型,执行以下命令:

kafka-topics.sh --describe --topic hello-topic --bootstrap-server <你的Kafka Broker地址>

如果输出中包含mirror.topic=true或MirrorMaker相关配置标识,即可确认这是镜像主题。

2. 使用普通主题写入(推荐方案)

镜像主题不适合作为本地生产者的写入目标,建议创建新的普通主题用于本地消息生产:

  • 创建主题(通过命令行或Kafka管理工具):
kafka-topics.sh --create --topic hello-topic-local --bootstrap-server <你的Kafka Broker地址> --partitions 1 --replication-factor 1
  • 修改生产者代码中的主题名称:
@GetMapping("/send")
public ResultVo send(@RequestParam(value = "content") String content) {
    return new ResultVo(kafkaTemplate.send("hello-topic-local", 0, "test", content));
}
  • 若需要消费该新主题的消息,同步修改消费者代码:
@KafkaListener(topics = "hello-topic-local", groupId = "hello-group")
public void handleMessage(String content) {
     log.info("{}", content);
}

3. 调整镜像主题配置(不推荐)

如果业务场景确实需要向镜像主题写入,可修改MirrorMaker的配置关闭目标主题的只读限制,但这种操作会破坏跨集群数据同步的一致性,可能导致数据混乱,仅在特殊场景下考虑使用。

内容的提问来源于stack exchange,提问作者LIANJI LI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 08:26:29