2011-09-24 19 views
7

Założenie jest takie: Dla asynchronicznego przetwarzania pracy mam domowej ramy, które:Praca kolejkowanie biblioteka/oprogramowanie Java

  • przechowuje zadania w bazie
  • posiada prosty Java API do tworzenia nowych miejsc pracy i procesory dla nich
  • Przetwarzanie może być osadzony w aplikacji internetowej lub może uruchomić się automatycznie na różnych maszynach do skalowania z
  • Web UI do monitorowania kolejki i anulowanie pozycji kolejki

Chciałbym zastąpić to gotową biblioteką, ponieważ oczekuję od nich większej solidności i nie chcę tego utrzymywać. Badałem problem i stwierdziłem, że możesz używać JMS do czegoś podobnego. Ale nadal musiałbym zbudować prosty interfejs API języka Java, dowiedzieć się, w jakim czasie uruchomię przetwarzanie, gdy chcę skalować i zbudować monitorujący interfejs użytkownika. Czuję, że jedyną rzeczą, jaką mógłbym czerpać z JMS jest to, że nie musiałbym robić rzeczy z bazy danych.

Czy jest coś podobnego do tego, co jest gotowe?

UPDATE

Zasadniczo jest to konfiguracja chciałbym zrobić:

  • uruchamiana jest aplikacja internetowa w kontenerze serwletów lub Application Server
  • aplikacja internetowa korzysta z klienta API do tworzenia miejsc pracy
  • X liczba maszyn przetwarza te zadania
  • Monitoruj i zarządzaj zleceniami z interfejsu użytkownika

Odpowiedz

5

Można użyć Quartz:

http://www.quartz-scheduler.org/

+0

Wygląda na to, że można go zgrupować przy użyciu bazy danych do przechowywania zadań. Czego nie otrzymuję, to w jaki sposób zbudowałbym te instancje klastra. Czy nadal muszę kodować swój własny serwer, który utrzymuje działanie Quartz? – palto

+0

@palto Zobacz tutaj http://www.quartz-scheduler.org/overview/features. Możesz osadzić kwarc w aplikacji JSE lub JEE lub utworzyć kwarc w obrębie serwera aplikacji (lub kontenera serwletu). – Andrey

+0

Ale co, jeśli chcę skalować? Mogę uruchomić Quartz na tym samym komputerze, na którym działa moja aplikacja internetowa (kontener serwletu). Ale jeśli chcę przenieść przetwarzanie zadań z aplikacji internetowej i utworzyć instancję x ilości maszyn do przetworzenia zadań, w jaki sposób mogę to zrobić?Czy muszę napisać własny serwer? – palto

0

Sprawdź wiosnę partii.

Link do strony sprint wsadowym: http://projects.spring.io/spring-batch/

+0

Jak byś setup wiosna partii do pracy w konfiguracji gdzie aplikacja internetowa tworzy miejsca pracy i innych urządzeń przetwarzania tych zadań ? Rzuciłem okiem na dokumentację, a Spring Batch wydaje się być tak samo przydatny do przetwarzania zadań, jak ESB, ale w jaki sposób mogę go wykorzystać do skalowania? – palto

+0

Nie sądzę, że Spring Batch ma coś wspólnego z ESB. Co oznacza "skalowanie"? Brzmi jak bezsensowny wymóg dla mnie, jak wyśmiewanie rozwiązania, ponieważ "nie jest lekki". Możesz wytłumaczyć? – duffymo

+0

Przez skalowanie mam na myśli, w jaki sposób mogę dodać dodatkowe maszyny do przetwarzania zadań. – palto