Ich habe eine Feder-Batch mit Wiederholung auf dem Schreiber. Der Autor sieht wie folgt aus:Erneut versuchen, im Frühling Batch-Schreiber
public class MyWriter implements ItemWriter<MyClass> {
@Retryable(maxAttempts=3, [email protected](delay=2000))
public void write(List<? extends MyClass> list) throws Exception {
// db operation 1 -- insert query
// some business logic
// db operation 2 -- update query
}
}
Wenn es eine Ausnahme in ‚db Betrieb 2‘ ist, versuchen Sie es erneut aufgerufen wird und die Ausführung beginnt von ‚db Betrieb 1‘ wieder wie erwartet. Aber 'DB-Operation 1' ist eine Einfügeabfrage und löst dieses Mal eine Ausnahme aus, wenn sie versucht, denselben Datensatz erneut einzufügen (und eine eindeutige Integritätsbedingung für die DB fehlschlägt). Letztendlich schlägt der Stapel nach 3 Versuchen fehl, und nichts von diesem Schritt wird an die Datenbank übergeben.
Sollte 'db operation 1' nicht vor dem erneuten Versuch zurückgesetzt werden? Ist das erwartete Verhalten oder etwas falsch mit der Implementierung?
Ich benutze Spring Boot-Anwendung und Feder jdbc.
Das hat geholfen .. danke! – Sakshi