2014-09-05 16 views
5

Mam prostą usługę DropWizard i chciałbym, aby interfejs API REST uruchamiał długo działające zadanie przetwarzania - zarówno procesor, jak i operacje we/wy związane. Wywołanie REST nie czeka na zakończenie zadania, powiadomienie nastąpi przez polling/długie polling/web socket.Przetwarzanie długich żądań za pomocą DropWizard

Na razie wolałbym, gdybym mógł to zrobić w Dropwizard i zachować wszystko w pojedynczym wdrożonym pliku JAR. Jakie są moje opcje?

AKTUALIZACJA: Interesują mnie moje opcje dotyczące uruchamiania długich zadań w Dropwizard, wdrożonych jako pojedynczy jar bez zewnętrznych zależności. Po prostu odradzasz nowy wątek? Zakładając, że jest tylko kilka takich próśb, prawdopodobnie by działało, ale powinny być lepsze opcje.

+0

Stackoverflow jest naprawdę pomocny przy konkretnym problemie, który nie pomaga w wyborze projektu. Biorąc to pod uwagę, rozważ WebHooks. –

+0

@ joakim-erdfelt - dodał więcej szczegółów do mojego pierwotnego pytania, mam nadzieję, że teraz ma więcej sensu. – bh213

Odpowiedz

11

Prawdopodobnie chcesz użyć zarządzanego zasobu:

http://www.dropwizard.io/1.0.5/docs/manual/core.html#managed-objects

do konfiguracji puli wątków. Wtedy Twoje początkowe żądanie może wysłać wiadomość do kolejki. Pula wątków może pobierać komunikaty z kolejki i przetwarzać je asynchronicznie.

Może być możliwe dodanie dodatkowego punktu końcowego, aby klienci mogli uzyskać bieżący stan procesu asynchronicznego.

+0

Czy możesz podać przykład, proszę? – me1111

+0

Czy w tym przypadku są potrzebne gniazda internetowe? – me1111

+0

To dość duży projekt, aby dać przykład, trzeba napisać komponenty frontowe i back-end oraz back-end needs, aby obsłużyć wiele żądań. Która część konkretnie? Jestem pewien, że istnieje mnóstwo przykładów, jeśli się rozejrzysz. –

Powiązane problemy