2017-06-07 8 views
0

私のSpringバッチアプリケーションでは、CustomItemWriterは2つの別々のテーブル(DynamoDB)で値を更新する必要があります。 1つのテーブルの更新が成功し、2番目のテーブルの更新で何らかの例外が発生した場合は、最初のテーブルからの更新もロールバックする必要があります。Spring Batchを使用して不整合状態を処理する方法は?

私はどのように私はこれを達成することができます

<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

DynamoDBのすべての操作はアトミックです。そのため、トランザクション内で複数の操作をまとめて管理することはできません。 DynamoDBは、RDBMSのようにネイティブにこの機能を提供しません。

ただし、AWSにはラッパーlibraryがあります。

その他代替ソリューションは、2番目のテーブルを更新するためにDynamoDBストリームを使用することです。

1アイテムが正常に更新されたら))表1 2のDynamoDBのストリームを作成し、それがストリーム 3を生成)あなたは表2

Dynamodb stream example

を更新するために、ストリーム・レコードを消費することができます
関連する問題