我使用的是Spring Batch (4.1.2版)。问题如下:
1/批处理作业是面向步骤的(2个步骤),第一步从oracle数据库加载数据(客户订单-唯一的少量数据),过滤它们以进行进一步处理,并将结果存储到内存对象中(orderNo -即在第二步中处理此订单)
2/第二步从内存中获取这些过滤后的数据并对其进行处理-加载数据(现在是全量数据、全订单)并处理它们-在oracle中启动存储过程,然后调用一些外部web服务。
第一步非常快--近似。5秒。
第二步非常慢-对于每个客户订单,它需要大约。10秒
典型的数据大小:第一步加载数千个订单,并过滤大约。100-300个订单,以便在第二步中进一步处理。
第一步的配置: 100个订单
第二步的配置: chunk =1
问题是:如果第二步(调用web服务)失败,元数据数据库事务就会因为超时而失败。或者,如果作业完成正常,元数据数据库将再次失败并出现超时。为什么?事务超时设置为30秒。在我看来,元数据数据库的事务不受块配置的影响。
注:订单数据库: oracle,元数据库: postgresql
有什么建议,解决方案,等等,谢谢?
发布于 2019-11-07 20:44:30
@事务性(传播= Propagation.REQUIRES_NEW)
关于ItemProcessor方法
O进程(I var1)抛出异常;
是问题的解决方案。
https://stackoverflow.com/questions/58728192
复制相似问题