2015-09-15 7 views
5

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

  1. 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)
  2. 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?
  3. 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?

Odpowiedz

3

Do zadań i repozytorium zadań można użyć osobnego menedżera transakcji. Zobacz tutaj: http://forum.spring.io/forum/spring-projects/batch/39609-using-2-different-datasources-with-spring-batch

Tak więc, potrzeba wyznaczenia dwóch z nich.

Mimo że można korzystać z dwóch oddzielnych menedżerów transakcji, nie oznacza to, że powinieneś. Jeśli nie przejdziesz do XA, wyobraź sobie, co by się stało, gdyby proces biznesowy przebiegał pomyślnie, ale dane zlecenia nie zostały zapisane. Następnym razem, gdy uruchomiony jest proces wsadowy, Spring Batch pomyśli, że zadanie się nie udało i spróbuj je uruchomić ponownie.

+0

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

+0

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

Powiązane problemy