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: 905 razy

Wątków: 46 | Odpowiedzi: 500

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: 436

.

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: 1912

.

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: 7121

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

6700k, asus m8e, titan ikspe chwilowo blower, 2*g.skill f4-3000c15d-32gtz, tt water 3.0, corsair 450d + ax760, samsung 950 pro 512, 850 pro 256 + 1tb, acer x34, iiyama b2888uhsu

16.07.2017 20:52

Wątków: 46 | Odpowiedzi: 500


@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: 7121

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)

6700k, asus m8e, titan ikspe chwilowo blower, 2*g.skill f4-3000c15d-32gtz, tt water 3.0, corsair 450d + ax760, samsung 950 pro 512, 850 pro 256 + 1tb, acer x34, iiyama b2888uhsu

17.07.2017 09:47

Wątków: 46 | Odpowiedzi: 500

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: 7121

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...

6700k, asus m8e, titan ikspe chwilowo blower, 2*g.skill f4-3000c15d-32gtz, tt water 3.0, corsair 450d + ax760, samsung 950 pro 512, 850 pro 256 + 1tb, acer x34, iiyama b2888uhsu

Aby dodać odpowiedź zaloguj się.

Ostatnie tematy na boardzie
1. [OT] upamiętnienie polskiego pilota w RAF 4 gregor | gregor Dziś 16:54
2. News - Już wkróce ceny na Steam w złotówkach 4 daniel_wl | Marek1712 Dziś 14:42
3. News - Need for Speed Payback - zwiastun w 4K i 60 klatkach ... 2 daniel_wl | maniekkk Dziś 13:29
4. [OT] ER-coming - lekarze na froncie (18) 1 Dario | cloud1980 Dziś 12:24
5. News - Rainbow Six Siege z poważnym błedem na PS4, może nawe... 4 daniel_wl | MPA2k Dziś 11:58
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