开发者社区> 问答> 正文

canal发送kafka失败是否会导致binlog读取暂停?发送失败会有的策略?

遇到一个问题,canal发送kafka失败会有什么影响(线上环境kafka突然挂了,已经挂了两天,无人知晓,无法预估对业务的影响)

猜测1:停止对binlog的读取,需重启canal 猜测2:停止对binlog的读取,不断重试,直到发送成功后继续读取binlog 猜测3:继续读取binlog,不同的消息一直不断重试发送kafka,直到发送成功 猜测4:发送不成功就忽略掉,继续该读读

其中,猜测3 个人觉得不大可能,如果一直读取,且kafka一直写入失败,会消耗canal及其所在主机的资源,如果长时间无法恢复,一定会出现资源耗尽的情况

昨天我看了一下源码,找了一会找到了这两个地方,动态启动了一个runner,线程池执行,而线程池是会吃掉异常的,所以可能是会继续读取binlog,但是发不进去的,丢失就丢失了

提问50.png

提问51.png

原提问者GitHub用户s6341887

展开
收起
后端老大 2023-04-26 15:35:03 150 0
1 条回答
写回答
取消 提交回答
  • 你要增加canal的监控,比如数据消费延迟

    原回答者GitHub用户agapple

    2023-04-26 18:31:02
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Java Spring Boot开发实战系列课程【第16讲】:Spring Boot 2.0 实战Apache Kafka百万级高并发消息中间件与原理解析 立即下载
MaxCompute技术公开课第四季 之 如何将Kafka数据同步至MaxCompute 立即下载
消息队列kafka介绍 立即下载