Spring Batch元数据数据库事务问题

我正在使用Spring Batch(版本4.1.2)。问题如下:

1 /批处理作业是面向步骤的(2个步骤),第一步从oracle数据库加载数据(客户订单-仅有少量数据),将其过滤以进行进一步处理并将结果存储到内存对象中(orderNo-即在第二步中处理此订单)

2 /第二步,从内存中获取这些经过过滤的数据并对其进行处理-加载数据(现在已包含全部数据,已完成全部订单)并进行处理-在oracle中启动存储过程,然后调用一些外部Web服务

第一步非常快-大约5秒

第二步非常慢-每个客户订单大约需要花费10秒

数据的典型大小:第一步会加载数千个订单,并过滤大约2,000个订单。第二步要处理100-300个订单。

第一步的配置:100个订单的大块

第二步配置:块= 1

问题:如果第二步(调用Web服务)失败,则由于超时,元数据数据库事务失败。或者,如果作业完成,则元数据数据库再次失败并超时。为什么?事务超时设置为30秒。在我看来,元数据数据库的事务不受块配置的影响。

注意:订单数据库:oracle,元数据数据库:postgresql

有什么建议,解决方案等吗?

wydly443 回答:Spring Batch元数据数据库事务问题

@Transactional(传播=传播。REQUIRES_NEW)

在ItemProcessor方法上

O进程(I var1)抛出异常;

是解决问题的方法。

本文链接:https://www.f2er.com/3153022.html

大家都在问