我是春季批次的新手。在春季批次中,作业(有多个步骤)被视为交易,或者作业中的每个步骤都被视为单独的交易?
提前致谢
答案 0 :(得分:0)
在Spring Batch中,每个" chunk"在交易范围内执行。在基于块的步骤中,每个块在事务范围内执行。在Tasklet步骤中,对Tasklet
的每次调用都包含在事务中。您可以在此处的文档中阅读有关Spring Batch的事务语义的更多信息:https://docs.spring.io/spring-batch/trunk/reference/html/transactions.html
答案 1 :(得分:-1)
通常,您可以在步骤级别添加事务属性,如下所示:
<job id="sampleJob" job-repository="jobRepository">
<step id="step1">
<tasklet transaction-manager="transactionManager">
<chunk reader="itemReader" writer="itemWriter" commit-interval="10"/>
</tasklet>
</step>
</job>
但是,如果要在单个事务中运行所有步骤,则从事务方法调用该作业,如:
@Transactional(propagation=Propagation.REQUIRED)
在后一种情况下,考虑如何处理超时或回滚非常重要。