在春季批次中,作业(具有多个步骤)被视为交易或作业中的每个步骤被​​视为单独的交易?

时间:2018-01-03 06:09:17

标签: spring spring-batch

我是春季批次的新手。在春季批次中,作业(有多个步骤)被视为交易,或者作业中的每个步骤都被视为单独的交易?

提前致谢

2 个答案:

答案 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)

在后一种情况下,考虑如何处理超时或回滚非常重要。