cannal 客户端 拿数据 第一次拿是 batchId=1,size=1,msg=Message[id=1 exit 后第二次拿数据变成 batchId=2,size=2,msg=Message[id=2
而且第二次拿到的是 两条重复的数据 有一样的 logfileName: "mysql-bin.000012" logfileOffset: 3207300
重启canal server后,启动 canal客户端 又变成第一次拿数据,之后再拿数据都会重复,请问这个怎么解决,总不能每次调试都 重启canal server吧
CanalConnector connector = CanalConnectors.newSingleConnector(new InetSocketAddress("192.168.157.130", 11111), "example", "", ""); int batchSize = 10; int emptyCount = 0; try { connector.connect(); connector.subscribe(".\.."); connector.rollback(); int totalEmtryCount = 120; while (emptyCount < totalEmtryCount) { Message message = connector.getWithoutAck(batchSize); // 获取指定数量的数据 long batchId = message.getId(); int size = message.getEntries().size(); if (batchId == -1 || size == 0) { emptyCount++; System.out.println("empty count : " + emptyCount); try { Thread.sleep(1000); } catch (InterruptedException e) { } } else { emptyCount = 0; System.out.printf("message[batchId=%s,size=%s,msg=%s] \n", batchId, size, message.toString()); System.exit(0); printEntry(message.getEntries()); }
connector.ack(batchId); // 提交确认
// connector.rollback(batchId); // 处理失败, 回滚数据
}
System.out.println("empty too many times, exit");
} finally {
connector.disconnect();
}
原提问者GitHub用户nothingsNeed
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。