在我的spring批处理应用程序中,CustomItemWriter必须在两个单独的表(DynamoDB)中更新值。如果一个表更新成功并且在更新第二个表时发生了一些异常,那么第一个表中的更新也应该回滚(要么更新都应该成功,要么都没有)。
我正在使用以下弹簧批量配置
<bean id="jobRepository"
class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean">
<property name="transactionManager" ref="transactionManager" />
</bean>
<bean id="transactionManager"
class="org.springframework.batch.support.transaction.ResourcelessTransactionManager" />
<bean id="jobLauncher"
class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
<property name="jobRepository" ref="jobRepository" />
</bean>
我怎样才能做到这一点。春季批次是否有任何支持。我们是否应该使用MapJobRepositoryFactoryBean以外的其他东西?
答案 0 :(得分:0)
DynamoDB中的所有操作都是原子操作。因此,多个操作无法联合起来进行交易管理。 DynamoDB本身不像RDBMS那样提供此功能。
但是,AWS有一个包装器library。
其他替代解决方案将使用DynamoDB流来更新第二个表。
1)在表1上创建DynamoDB流 2)项目成功更新后,会生成一个流 3)您可以使用流记录来更新表2