Używam Spring Batch przy użyciu 2 (może więcej, załóżmy 2 dla prostoty) baz danych. Jeden do przechowywania wszystkich danych pracy (wszystkie tabele BATCH_ *). Druga za faktyczne uruchomienie moich danych logiki biznesowej. Jest kilka rzeczy, których nie rozumiem.partia sprężynowa używa różnych menedżerów transakcji między repozytorium zadań a rzeczywistymi zadaniami
- Gdy oświadczyłem mój JobRepository już określony moje TransactionManager, dlaczego muszę zrobić to ponownie na moim tasklet? (Nie używam domyślnej nazwy celowo)
- Jestem obecnie daje tasklet ten sam TrasactionManager, co mój JobRepository, który zarządza różnymi połączeniami od tego, co robię w moich działaniach. Czy to oznacza, że mam własne zarządzanie transakcjami w moim pisarzu lub czytelniku?
- Jeśli # 2 jest prawdziwe, "Co jeśli" w How does Spring Batch transaction management work? będzie dla mnie problemem (bez wykonywania XA), prawda? Ponieważ moje dane i dane zleceń są w różnych połączeniach, prawda?
Tego się martwię. Więc kiedy nie korzystasz z XA, najlepiej umieścić tabelę partii i danych w tej samej bazie danych? lub upewnić się, że każdy krok można bezpiecznie uruchomić ponownie? Inną rzeczą jest menedżer transakcji w zadaniu dla wywołania jdbc wewnątrz logiki krokowej lub zapisywania statusu zadania? lub oba? – lunaspeed
Prawidłowo, instrukcja zaleca umieszczanie tabel zadań wsadowych w tym samym miejscu, co dane biznesowe, ale przypuszczam, że można również bezpiecznie wykonywać czynności powtarzalne. Menedżer transakcji można określić na poziomie poziomu zadań, na poziomie zadania lub w obu, w zależności od tego, jak chcesz go skonfigurować. Nie muszą być takie same. – Brad