我正在使用 Spring Batch(版本 4.1.2)。问题如下:
1/批处理作业是面向步骤的(2个步骤),第一步从oracle数据库加载数据(客户订单-唯一的少量数据),过滤它们以进行进一步处理并将结果存储到内存对象中(orderNo -即在第二步处理这个订单)
2/ 第二步从内存中获取这些过滤后的数据并处理它们 - 加载数据(现在是全量数据,全顺序)并处理它们 - 在 oracle 中启动存储过程,然后调用一些外部 Web 服务
第一步非常快 - 大约。5 秒。
第二步非常慢 - 对于每个客户订单,大约需要。10 秒。
数据的典型大小:第一步加载大约数千个订单和过滤器。100-300个订单在第二步做进一步处理。
第一步的配置:100 个订单的块
第二步的配置:chunk = 1
还有问题:如果第二步(调用web服务)失败,元数据库事务会因为超时而失败。或者,如果作业正常完成,元数据数据库将再次因超时而失败。为什么?事务超时设置为 30 秒。在我看来,元数据库的事务不受块配置的影响。
注:订单数据库:oracle,元数据库:postgresql
请问有什么建议、解决方案等吗?