2017-06-07 3 views
0

In meiner Spring Batch-Anwendung muss CustomItemWriter den Wert in zwei separaten Tabellen (DynamoDB) aktualisieren. Wenn eine Tabellenaktualisierung erfolgreich ist und eine Ausnahme beim Aktualisieren der zweiten Tabelle auftritt, sollte die Aktualisierung von der ersten Tabelle ebenfalls zurückgesetzt werden (dh entweder beide Aktualisierungen sollten erfolgreich sein oder keine).Wie wird der Inkonsistenzstatus mit Spring Batch behandelt?

ich folgendes Frühjahr Batch-Konfiguration bin mit

<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> 

Wie kann ich das erreichen. Gibt es Unterstützung durch Federbatch? Sollen wir etwas anderes als MapJobRepositoryFactoryBean verwenden?

Antwort

0

Alle Vorgänge in DynamoDB sind atomar. Daher können mehrere Vorgänge nicht zusammengelegt werden, um eine Transaktion zu verwalten. DynamoDB bietet diese Funktion nicht nativ wie RDBMS.

AWS verfügt jedoch über einen Wrapper library dafür.

Andere alternative Lösung wäre, DynamoDB Stream zu verwenden, um die zweite Tabelle zu aktualisieren. Erstellen

1) einen DynamoDB Strom auf Tabelle 1 2) Sobald das Element erfolgreich aktualisiert wird, es erzeugt einen Strom 3) Sie können den Stream Rekord verbrauchen die Tabelle zu aktualisieren 2

Dynamodb stream example

Verwandte Themen