Kolejki MQ jedna dla wszystkich objektów czy wiele ?

  • Sprawdź bezpośredni link do posta
  • Statsy wątku

accuface | 15.07.2017 16:46 | Odpowiedzi: 7 | Śledzony: 1 | Czytano: 1038 razy

Wątków: 47 | Odpowiedzi: 507

Witam

Przykład który podaje jest wymyślony, dlatego nie czepiajcie się proszę ewentualnych niekonsekwencji. Wyobraźmy sobie że piszemy aplikację obsługująca lotnisko. Mamy osoby które przyleciały z różnych części świata i mamy serwis który przerabia dane dotyczące pasażerów. Przykładowo w Brazylii jest jakaś epidemia, tak więc dla przyjezdnych z tego kraju serwisy poza standardowymi operacjami wysyłają wiadomość MQ do serwisu który obsługuje specyfistyczny problem wobec przyjezdnych z Brazylii.
Sens problemu jest taki że w każdej chwili może pojawić się nowy kraj który będzie wymagał indywidualnego traktowania.
Mój sposób na rozwiązanie problemu byłby taki że korzystamy z jednej kolejki gdzie serializujemy i deserializujemy objekt który byłby tak naprawde wrapperem:

class WrapperObject
private EnumProblemType typProblemu = EnumProblemType.BRAZYLIAN_PLAGUE;
private Object objektBiznesowy

Po stronie beana nasłuchującego wiadomości, chciałbym postawić fabrykę:

Service service= ServiceFactory.getService(EnumProblem.BRAZYLIAN_PLAGUE);

A następnie serwis przetwarzałby objekt z wiadomości, takie rozwiązanie wydaje mi się łatwe do rozbudowy o nowe kraje, osoba która przejeła by projekt po mnie łatwo by zorientowała się o co chodzi.
Drugie podejścię
Każdy nowy kraj to osobna kolejka MQ i osobny bean nasłuchujący.

Co doradzacie?

Skocz do ostatniej odpowiedzi | Pierwszy post na stronie

Odpowiedzi:

15.07.2017 19:36

Wątków: 80 | Odpowiedzi: 442

.

Jeśli dobrze rozumiem chodzi Ci o obsługę wiadomości różnego typu.
Można więc postawić jedną kolejkę główną, która będzie dróżnikiem kierujacym typy do kolejek specyficznych dla typu.
Tym sposobem jedynie dróżnik musi ogarniać wszystkie typy i znać wszystkich odbiorców. Poza tym, każda kolejka może być małym, niezależnym bytem.
Eeentualne zarządzanie priorytetami również byłoby możliwe i łatwiejsze.

:)

16.07.2017 01:07

Wątków: 7 | Odpowiedzi: 1933

.

Ogólnie oba rozwiązania są spoko, wszystko zależy od wymagań tak naprawdę.

Nie wiem jaki masz stack technologiczny, ale u nas najprawdopodobniej zrobilibyśmy to na takiej zasadzie, że każdy z takich przypadków problemu dziedziczyłby po czymś w stylu "ProblemType". Korzystając z publish subscribe można wtedy słać to co się faktycznie dzieje (np. Brazilian_plague) i obsługiwać to w tak naprawdę każdy możliwy sposób (możesz też sobie poczytać o czymś takim jak polimorfic message dispatch).

16.07.2017 11:05

Wątków: 3 | Odpowiedzi: 7643

po pierwsze

to na czym bedziesz te kolejki obslugiwal? msmq? rabbit? zmq/amq? sqs? bo w zaleznosci od tego co masz pod spodem, tak rozne masz tez zalecenia co do pisania aplikacji... Ikona: :P

7900x+r6e+64gbRAM+titanxD+fullCL+NVM, 1950x+RZE+64gbRAM+vegaFE+aio+NVM, do tego twoj buldupy i duzo monitorow, handluj z tym

16.07.2017 20:52

Wątków: 47 | Odpowiedzi: 507


@wymiot to jest jeszcze do ustalenia tymczasowo wykorzystujemy MQ z GlassFisha. Jestem otwarty na propozycje, jeśli coś nadaje się lepiej.

16.07.2017 21:47

Wątków: 3 | Odpowiedzi: 7643

no ale propozycje

czego? tego, co macie uzywac? to chyba architekt aplikacji powinien wiedziec, nie ja Ikona: :P a jezeli sami nie macie pojecia, to moze sobie spiszcie wszystkie wymagania na kartce, obok dajcie nazwy konkretnych produktow i wykreslajcie... Ikona: :P bo serio, takie rzeczy to sie nie zgaduje, tylko dopasowuje do wymagan (protip - chociazby skalowalnosc, dostepnosc i to, na czym aplikacja bedzie hostowana ma tutaj znaczenie)

7900x+r6e+64gbRAM+titanxD+fullCL+NVM, 1950x+RZE+64gbRAM+vegaFE+aio+NVM, do tego twoj buldupy i duzo monitorow, handluj z tym

17.07.2017 09:47

Wątków: 47 | Odpowiedzi: 507

No właśnie problem polega na tym że to ja pełnie rolę arch.

mimo że mam smieszny staż w IT.To jest moje pierwsze spotkanie z kolejkami. Początkowo wybrałem Active MQ, ponieważ ma dobrą dokumentację, niestety GlassFish 5 wywalał błędy gdy podłączałem go, oczywiście możliwe jest to że źle to robiłem. Na te chwile używam brokera wbudowanego w GF5.

17.07.2017 10:49

Wątków: 3 | Odpowiedzi: 7643

no to moze

od poczatku. co to ma byc, jak/gdzie to ma byc hostowane, jakie sa wymagania dotyczace skalowalnosci, dostepnosci i czy to zamkniety projekt czy czesc wiekszego obrazka? mozesz na prv napisac jak nie chcesz tutaj...

7900x+r6e+64gbRAM+titanxD+fullCL+NVM, 1950x+RZE+64gbRAM+vegaFE+aio+NVM, do tego twoj buldupy i duzo monitorow, handluj z tym

Aby dodać odpowiedź zaloguj się.

Ostatnie tematy na boardzie
1. [OT] Xbox One S + Gra 650 PLN 0 aloscha Dziś 10:22
2. News - Firefox będzie ostrzegał przed stronami, które został... 0 daniel_wl Dziś 09:05
3. News - Karty graficzne AMD Radeon RX Vega błyszczą w VRMark ... 1 daniel_wl | Rafcio Dziś 08:18
4. Zapisanie wsadu - en25q64 0 snoopster Dziś 07:02
5. [OT] Ps4 Slim 1TB Empik 899pln 13 aloscha | aloscha Dziś 00:34
Poprzednie-Następne
1. [TEL] Serwis sony i wymiana telefonu na inny model 14 Darnokos | Darnokos 15.07.2017
2. [BLOG] Troche breakbeatu(music) 1 Hobordd | Hobordd 15.07.2017
3. [BLOG] Zachciało mi się reinstalacji W10... 16 krzycz | krzycz 15.07.2017
4. [GIEŁDA] [K] GTX 1050 7 karoool2 | brii 15.07.2017
5. News - Call of Duty: WWII - wyciekł trailer trybu zombie 1 daniel_wl | marucins 16.07.2017
6. News - Lenovo przygotowało headset rozszerzonej rzeczywistoś... 0 daniel_wl 16.07.2017