开发者社区> 问答> 正文

Canal写kafka的逻辑没有考虑kafka的message size限制?

canal/server/src/main/java/com/alibaba/otter/canal/kafka/CanalKafkaProducer.java

Lines 104 to 113 in e4b6385

if (canalDestination.getPartition() != null) { try { ProducerRecord<String, String> record = new ProducerRecord<String, String>(canalDestination .getTopic(), canalDestination.getPartition(), null, JSON.toJSONString(flatMessage)); producer2.send(record); } catch (Exception e) { logger.error(e.getMessage(), e); // producer.abortTransaction(); callback.rollback(); }

如果需要发送的record大小超过kafka限制(默认1MB), 是不是无法继续处理?

原提问者GitHub用户firnsan

展开
收起
Java工程师 2023-05-08 19:05:08 98 0
1 条回答
写回答
取消 提交回答
  • canal batchSize配置不要超过1M

    servers: localhost:9092 #for rocketmq: means the nameserver retries: 0 batchSize: 16384 lingerMs: 1 bufferMemory: 33554432

    Canal的batch size, 默认50K, 由于kafka最大消息体限制请勿超过1M(900K以下)

    canalBatchSize: 50

    原回答者GitHub用户rewerma

    2023-05-09 19:05:07
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

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