Kiedy korzystać z autobusu eventowego? [zamknięte]

zamknięte . To pytanie wymaga szczegółów lub jasności . Obecnie nie przyjmuje odpowiedzi.

Chcesz poprawić to pytanie? Dodaj szczegóły i wyjaśnij problem by edytując ten post .

Zamknięte 7 lat temu .

Popraw to pytanie

Projektuję backend dla nowej aplikacji internetowej Java i staram się zdecydować, czy używać szyny zdarzeń, a konkretnie Guava EventBus.

Większość żądań po stronie serwera będzie synchroniczne: oznacza to, że użytkownik żąda danych i potrzebuje odpowiedzi w ciągu kilku sekund. Jednak istnieje również sporo żądań, które mogą być asynchroniczne i które są "odpal i zapomnij" po stronie klienta. Tak długo, jak w końcu są przetwarzane, klient może się mniej przejmować, jeśli przetwarzanie zajmuje 2 sekundy lub 2 godziny.

Dla tych asynchronicznych żądań, planuję, aby Servlet nasłuchujący pod zmapowanym adresem URL publikował żądania do kolejki. Konsument będzie wtedy dequeue każde żądanie i skieruj je do odpowiedniego Handlera. To jest miejsce, gdzie EventBus może lub nie może wejść w grę. Logika biznesowa przekierowywania żądania do właściwego modułu obsługi jest dość złożona. Zazwyczaj szlak wielbłądów byłby idealnym rozwiązaniem. W moim przypadku użycia zastanawiam się, czy mogę po prostu podłączyć kilka "procesorów" (programów obsługi zdarzeń) do tej samej magistrali zdarzeń, a następnie Kazdy z nich odpala i odbiera zdarzenia do i od siebie, aż efekt końcowy zostanie wyprodukowany.

I chciałbym powiedzieć, że już zbadałem używając Apache Camel i wierzę, że Camel jest właściwym narzędziem do tej pracy. Niestety, z powodów wykraczających poza zakres tego pytania, nie zamierzam z niego korzystać. Zacząłem więc wyczarowywać rozwiązania podobne do wielbłądów, w ten sposób dotarłem do Guava ' s EventBus. Ale to może nie być odpowiedni zamiennik.

Myślę, że szukam klasyfikacji problemu, który rozwiązuje wzór Event Bus, a następnie muszę ustalić, czy pasuje do mojego przypadek użycia.

Author: sebkur, 2013-02-07

1 answers

Oto stwierdzenie problemu, które EventBus rozwiązuje w skrócie:

"chcę łatwego, scentralizowanego sposobu powiadamiania kodu, który jest zainteresowany konkretnymi typami zdarzeń, gdy te zdarzenia występują, bez bezpośredniego powiązania między kodem, który publikuje Zdarzenie, a kodem, który je otrzymuje."

Kiedy mówisz "logika biznesowa przekierowania żądania do właściwego Handlera jest dość złożona", podejrzewam , że EventBus może nie być tym, czego szukasz, ponieważ trasy oparte są na tylko w Java object class (chociaż możesz zrobić kilka fantazyjnych rzeczy z implementacją interfejsów na klasach zdarzeń i subskrybentami subskrybującymi określone interfejsy).

 46
Author: ColinD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-12 20:14:41