我程序启动连接canal 报错: something goes wrong with reason: something goes wrong with channel com.alibaba.otter.canal.server.exception.CanalServerException: ack error , clientId:1001 batchId:47 is not exist , please check
怎么解决?canal服务端我也重启了。运行了一下,过一阵程序启动还是继续会报错
下面是我的代码
while (true) { Message message = connector.getWithoutAck(1000); // 获取指定数量的数据 long batchId = message.getId(); int size = message.getEntries().size(); if (batchId == -1 || size == 0) { try { Thread.sleep(1000); } catch (InterruptedException e) {} } else { long beginTime = DateUtils.nowDateToTimestamp(); //逻辑:1先判断插入与更新2如果是状态已完成4,则获取数据。进行保存,存mongdb try { switchHandle(message.getEntries()); connector.ack(batchId); // 提交确认 } catch (Exception e) { //System.out.println("同步错误,需要回滚" + e.getMessage()); logger.error("同步错误,需要回滚", e); connector.rollback(batchId); continue; } long endTime = DateUtils.nowDateToTimestamp(); logger.info("此次同步时间是:" + (endTime - beginTime) + " ms"); } }
原提问者GitHub用户fanqinghui
出现这个问题,怀疑是server端发生了instance重启,导致内存里的batchId丢失. 检查一下服务端的日志
原回答者GitHub用户agapple
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。