说明:
- 背景说明:需要定时同步别的业务系统基于webservice发布的数据(主表、附表)
- 问题缘由:service提供方,主表支持批量查询,一次可以查询100条,但是附表只能根据主表的主键一条一条的查询。因此我如果要获取所有的附表内容就要循环访问服务(约1万多次)因此会出现Java:java.lang.OutOfMemoryError: GC overhead limit exceeded
解决方法:
总体思路:出现内存溢出主要是因为我在一个总job中循环了1万多次webservice,在大job中循环调用小job(100次访问)解决问题。
- 总体流程图
- 前两项检查Web服务是否可用,就不具体展示了,可以参考下面的链接,我也是参考他的博客做的https://blog.csdn.net/a275838263/article/details/51302541
- lawCount初始化,执行sql是先清空内容表(我是全量更新),查询主表确定需要循环的次数,把lawCount复制到结果集