W moim wiosennym zadaniu wsadowym mój procesor przedmiotów dzieli obiekt, który czyta czytnik przedmiotu, na siedem list o zmiennej długości. Listy te muszą być zapisane w siedmiu tabelach w bazie danych, a wszelkie błędy (jak rekordy odrzucające bazę danych z dowolnego powodu) muszą spowodować wycofanie transakcji na wszystkich siedmiu tabelach.w Spring Batch, czy wiele JdbcBatchItemWriters może być skonfigurowanych do pisania równolegle?
Obecnie tworzę owinięty obiekt z tych siedmiu list, które są przekazywane do niestandardowego programu piszącego. Program piszący przyjmuje wszystkie te elementy, tworzy własne siedem list tak, że ma tylko siedem zapisów w pakietach (przy użyciu DAO opartych na JdbcTemplate) dla partii pakowanych obiektów zwróconych przez procesor przedmiotów.
Mój program piszący wywołuje funkcję wstawiania dla każdej z tych tabel sekwencyjnie, którą chciałbym przyspieszyć. Zastanawiam się, czy mogę napisać listy, do ich odpowiednich tabel, równolegle, tak aby ogólny czas wykonania był czasem najdłuższego zapisu. Jednym z wymogów, którego nie mogę złamać, jest to, że musi to być jedna transakcja, którą należy wycofać, jeśli którykolwiek z autorów ma jakieś wyjątki.
dlaczego nie używać normalnego 'java.util.concurrent.ThreadPoolExecutor' w ItemWriter do wysyłania do równoległych wątków? –