2009-10-22 6 views
45

Próbuję się nauczyć Spring Batch, ale startup guide jest bardzo mylące. Komentarze jakJak mogę rozpocząć korzystanie z Spring Batch?

można uzyskać całkiem dobry pomysł, o jak skonfigurować zadanie badając testy jednostkowe w pakiecie org.springframework.batch.sample (w src/main/java) i konfiguracja w src/main/resources/jobs.

nie są dokładnie pomocne. Również uważam, że projekt Sample jest bardzo skomplikowany (17 niepustych przestrzeni nazw z 109 klasami)! Czy istnieje prostsze miejsce do rozpoczęcia pracy z Spring Batch?

+2

muszę się zgodzić. Odkrywanie ram teraz i próbek nie są dokładnie przyjazne dla początkujących :) –

Odpowiedz

35
+1

Aby dodać do tego, jeśli ktoś szuka sposobu na uruchomienie Spring Batch przy użyciu Quartz (scheduler), poszukaj quartz-job-launcher-context.xml w src/main/resources próbek. –

+1

Wygląda na to, że pierwsze 3 linki są nieaktualne, a 2 ostatnie łącza są błędne. I nie wydaje się, żeby była na tym przydatna książka ... Jakieś sugestie facetów? – wakandan

+1

Wystarczy, że wyjaśnię komentarz @James ..._samples_ są tymi na wiosnę. Partia dystrybucji. –

4

Zanim wskoczysz na wagon ze sprężyną, możesz przeczytać, co ma własny klon SO mówiąc o jego wadach:

http://www.cforcoding.com/2009/07/spring-batch-or-how-not-to-design-api.html.

Niedawno oceniłem Spring Batch i szybko go odrzuciłem, gdy zdałem sobie sprawę, że nie dodało ono nic do mojego projektu, poza nadymaniem i obciążeniem. Spring Batch może w końcu stać się produktem OK (podobnie jak EJB poprawiło się tym razem), ale w tej chwili wygląda podejrzanie jak rozwiązanie w poszukiwaniu problemu.

+0

Już to przeczytałem. Wygląda na to, że będzie przydatna dla tego, co próbuję zrobić (i ze względów architektonicznych muszę korzystać ze Springa). Jednak martwię się o złożoność (okropne skomplikowane pliki konfiguracyjne). W skrócie, wciąż oceniam to sam, dlatego zadałem to pytanie. –

+0

@C. Ross - Całkowicie możliwe jest użycie Spring w połączeniu z Quartz (do planowania) i unikanie Spring Batch. Możesz użyć wzorca strategii do generalizowania zadań i kroków, a także możesz łatwo przetasować własną utrwalalność, przechowując dane transakcyjne na swoich danych. Tak właśnie skończyliśmy i wszystko działa dobrze. Po prostu nie widzę Spring Batch oferując coś wartościowego, aby zrekompensować bóle głowy. – rtperson

+1

Systemy wsadowe mogą być czymś więcej niż krokami i zadaniami. Jeśli to wszystko, czego potrzebujesz, to dobrze, ale jeśli potrzebujesz dodatkowych funkcji, takich jak powtarzanie i ponawianie funkcji, przetwarzanie równoległe itp., Spring Batch może być dobrym rozwiązaniem. – Steve

6

Zgadzam się, że instrukcja użytkownika jest bardzo myląca (w porównaniu do przewodnika Spring Core w każdym razie). Nie rozwiązuje ona adekwatnie niektórych bardzo ważnych gier, które napotkasz w jakimkolwiek umiarkowanie skomplikowanym scenariuszu wsadowym.

ważnych rzeczy, które trzeba drążyć jako nowy rozrusznik i decydują wymagania na to,

  • konfiguracja wyjątków (jeśli pominąć, jeśli się nie powiedzie, kiedy ponownie)
  • wykorzystanie kontekstu wykonywania w celu utrzymania stanu (np. kiedy użyć kontekstu wykonania kroku a kontekstu wykonania zadania).
  • eksploatacyjne stanu (stosować zakres etapu, zwłaszcza dla parametrów wejściowych)

Warto trwając jednak. Programowanie wsadowe bardzo różni się od innych stylów po stronie serwera i znacznie korzysta ze zwykłej metody "abstrakcji wzorca".

1

Właśnie zacząłem patrzeć na Spring Batch jako możliwy zamiennik naszego wewnętrznego systemu wsadowego. Faktycznie utworzenie serwera wsadowego z możliwością planowania zadań i interfejsu JMX na wierzchu w celu zapewnienia przeglądu uruchomionych/poprzednio uruchomionych instancji zadań zajęło niewiele ponad jeden dzień. Jednak podobnie jak Caoilte, znajduję problemy z dokumentacją.Głównym i nieznajdującym się w dokumentacji lub javadocs są tabele wymagane przez JobRepository. Wartością domyślną jest posiadanie JobRepository-persistence, które jest jednym z wymagań mojego nowego serwera, ale nie mogę znaleźć żadnej wzmianki o wymaganych tabelach. Musiałem przeszukiwać Google wysoko i nisko, aby o nich nie wspominać (jeśli są w dokumentacji, z przyjemnością posmaruję moją skromną placek).

Myślę, że faktycznie stworzenie partii do uruchomienia w Spring Batch jest dość złożonym zadaniem, biorąc pod uwagę szeroki wachlarz dostępnych opcji konfiguracyjnych. To jest siła w moich oczach. Daje to możliwość konfigurowania złożonych zadań wsadowych w języku xml, których jeszcze nie znalazłem w żadnej innej strukturze wsadowej (o której mi wiadomo). Ale jeśli naprawdę nie chcesz wykorzystać mocy Spring Batch, dlaczego nie po prostu stworzyć pracę z jednym krokiem zadania (Ale wtedy musisz zadać sobie pytanie, czy warto narzut).

+1

Porzuciłem ramy ze względu na ograniczoną dokumentację, a ponieważ szczerze mówiąc, jest to znacznie więcej niż potrzebowaliśmy. Powodzenia. –

+0

Patrząc na to jeszcze raz, przygotowują się do wydania wersji 2.0. –

1

Szkoda, że ​​was porzuciliście, ramy są naprawdę świetne. Ale jeśli ktoś inny potrzebuje szybkiego startu spróbować: Spring Batch Quick Start

/Anatolij

5

Niedawno dał wiosna SERII prawdziwą szansę. Powiem, że w mojej implementacji użyłem repozytorium w pamięci (ponieważ ponowne uruchamianie i ponawianie nie były priorytetem w warunkach mojego projektu), ale mogę docenić to, co Richard mówi o JobRepository: zasadniczo musisz kopać głęboko, aby znaleźć schemat bazy danych.

Dla Spring Batch 2.1, zapewniają one pewną dokumentację w repozytorium: http://static.springsource.org/spring-batch/reference/html/metaDataSchema.html, w tym dyskusje o tym, jak radzić sobie z implementacjami specyficznymi dla baz danych. DDL do tworzenia tabel znajdują się w podstawowej pliku JAR Wiosna Batch:

wiosna-partia-core-2.1.0.RELEASE.jar.:/Org/Spring Framework/partii/core/* sql

Skrypty są dostępne dla DB2, Derby, H2, HSQLDB, MySQL, Oracle 10g, PostgreSQL, MS SQL i Sybase.

+0

Kolejna obserwacja dotycząca Spring Batch: Potrafię docenić sentymenty ludzi dotyczące API: na pierwszy rzut oka wydaje się być ciężka. Zapewnia jednak wystarczającą dobroć w przetwarzaniu płaskich plików ASCII (i byłbyś zaskoczony, jak wiele starszych procesów przetwarzania danych nadal używa płaskich plików o stałej szerokości - do licha, tylko ilość COBOL, która wciąż jest używana, czasami sprawia mi ból) Postanowiłam spróbować. Moja ostatnia myśl jest taka, że ​​pojęcie kontekstów wykonania zleceń i kroków jest tym, co mnie nieustannie rozwijało. – WineSoaked

+0

Możesz edytować ten komentarz na swoje pytanie. Ale to, co mówisz, ma sens. Mam do czynienia z plikami ASCII produkowanymi przez COBOL, więc może jeszcze raz się nim zajrzę. Nadal mam niejasne przekonanie, że to przesada. –

+0

Tak, to była moja pierwsza odpowiedź (i komentarz) na SO, więc mechanizmy edycji nie były dla mnie jasne (tak jak są teraz). – WineSoaked

4

W tym samouczku utworzymy prostą aplikację Spring Batch, aby zademonstrować sposób przetwarzania serii zadań, których głównym celem jest zaimportowanie list rozdzielanych przecinkami i rekordów o stałej długości. Ponadto dodamy interfejs sieciowy przy użyciu Spring MVC, aby nauczyć się wyzwalać zadania ręcznie, abyśmy mogli wizualnie sprawdzić importowane rekordy. W warstwie danych użyjemy JPA, Hibernate i MySQL.

  1. http://krams915.blogspot.jp/2012/02/spring-batch-tutorial-part-1.html
  2. http://krams915.blogspot.jp/2012/02/spring-batch-tutorial-part-2.html
  3. http://krams915.blogspot.jp/2012/02/spring-batch-tutorial-part-3.html
  4. http://krams915.blogspot.jp/2012/02/spring-batch-tutorial-part-4.html
+0

Ten samouczek obejmuje Spring Batch 2! Więc możesz użyć tego zamiast przestarzałych Tutorials Spring Batch 1. –

Powiązane problemy