我们有一个使用以下连接资源代码将 100M 记录从共享对象存储桶加载到 Mongo DB 的用例
HttpURLConnection httpConnection = null;
try {
httpConnection = (HttpURLConnection) this.url.openConnection();
ResourceUtils.useCachesIfNecessary(httpConnection);
if(StringUtils.hasText(byteRangeHeader)) {
httpConnection.setRequestProperty("Range", String.format("bytes=%s", byteRangeHeader));
}
inputStream = httpConnection.getInputStream();
} catch (Exception e) {
e.printStacktrace
}
return inputStream;
我们使用基于“范围”标头的分区,并使用 15 个线程加载 100M 记录。这大约需要 30 分钟。问题是 http 连接会在 15 分钟内被网络设备关闭。我们如何处理这种情况?
您没有提到您使用哪个读取器,但如果它继承自
AbstractItemCountingItemStreamItemReader
,那么即使它从远程资源读取,它也可以在重新启动场景中使用(它将恢复从元中保存的最后一个偏移量读取)数据存储库)。
如果您有足够的本地存储空间,另一个选择是下载文件或在第一步中将其暂存在数据库表/集合中,然后在下一步中对其进行处理。