Vorrei alcune informazioni sul flusso di dati in un'elaborazione di batch di primavera ma non riesco a trovare quello che sto cercando su Internet (nonostante some useful questions su questo sito).In che modo Spring Batch gestisce le transazioni (con possibilmente più origini dati)?
Sto cercando di stabilire degli standard per utilizzare Spring Batch nella nostra azienda e ci stiamo chiedendo come si comporta Spring Batch quando diversi processori in un passaggio aggiornano i dati su diverse origini dati.
Questa domanda si concentra su un processo frammentato ma non esitare a fornire informazioni su altre modalità.
Da quello che ho visto (correggimi se ho torto), quando una riga viene letta, segue l'intero flusso (lettore, processori, scrittore) prima che il successivo venga letto (al contrario di un'elaborazione di silo dove il lettore dovrebbe elaborare tutte le linee, inviarle al processore e così via).
Nel mio caso, diversi processori leggono i dati (in diversi database) e li aggiornano nel processo, e infine lo scrittore inserisce i dati in un altro DB. Per ora, JobRepository non è collegato a un database, ma sarebbe indipendente, rendendo la cosa ancora un po 'più complessa.
Questo modello non può essere modificato poiché i dati appartengono a diverse aree aziendali.
Come viene gestita la transazione in questo caso? I dati vengono impegnati solo dopo l'elaborazione del blocco completo? E poi, c'è una gestione del commit in 2 fasi? Come è assicurato? Quale sviluppo o configurazione dovrebbe essere fatto al fine di garantire la coerenza dei dati?
Più in generale, quali sarebbero le vostre raccomandazioni in un caso simile?
Grazie per la risposta. Dovremo affrontare la situazione di più database (ogni settore aziendale ha il proprio DB e talvolta è necessario accedere a diversi elementi aziendali). Questi sono comunque elementi utili. – Chop
sì, stavo pensando a questo, dovresti strutturarlo in modo che l'evento provenga da una singola fonte e la fase del processo potrebbe potenzialmente interrogare i vari database (cosa che accadrebbe nella transazione stabilita) e quindi aggiornare il db di destinazione.O magari avere qualcosa che aggrega gli eventi dei vari produttori e poi fare in modo che un singolo processore esegua gli aggiornamenti. – stringy05