JMS Topic vs kolejki

Zastanawiałem się nad różnicą między kolejką JMS a tematem JMS.

Ze strony ActiveMQ jest napisane

Tematy

W JMS temat implementuje publikowanie i subskrybowanie semantyki. Po opublikowaniu wiadomości trafia ona do wszystkich subskrybentów, którzy są zainteresowanych - tak więc wielu subskrybentów otrzyma kopię wiadomość. Tylko abonenci, którzy mieli aktywną subskrypcję w tym czasie broker otrzymuje wiadomość otrzyma kopię wiadomości.

Kolejki

Kolejka JMS implementuje semantykę load balancer . Jedna wiadomość zostanie odebrana przez dokładnie jednego konsumenta. Jeśli nie ma konsument dostępny w momencie wysłania wiadomości będzie przechowywany dopóki nie będzie dostępny konsument, który może przetworzyć wiadomość. Jeśli a konsument otrzymuje wiadomość i nie potwierdza jej przed zamknięciem następnie wiadomość zostanie ponownie dostarczona innemu konsumentowi. Kolejka może mają wielu konsumentów z wiadomości load balanced across the available konsumentów.

Szukam "rzeczy", która wyśle kopię wiadomości do każdego abonenta w tej samej kolejności, w której wiadomość została odebrana przez brokera ActiveMQ.

Jakieś pomysły?

 129
Author: Gruber, 2011-04-07

7 answers

Oznacza to, że temat jest odpowiedni. Kolejka oznacza, że wiadomość trafia do jednego i tylko jednego możliwego Abonenta. Temat trafia do każdego abonenta.

 99
Author: Joseph Ottinger,
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
2011-04-07 08:23:32

Tematy są dla modelu wydawca-abonent, podczas gdy kolejki są dla point-to-point.

 38
Author: vikram,
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
2013-12-03 16:30:58

A temat JMS jest typem miejsca docelowego w modelu dystrybucji 1 do wielu. Ta sama wiadomość jest odbierana przez wszystkich użytkowników . Można to również nazwać modelem "broadcast". Możesz myśleć o temacie jako odpowiedniku tematu w Obserwator wzorcu projektowym dla obliczeń rozproszonych. Niektórzy dostawcy JMS efektywnie decydują się zaimplementować to jako UDP zamiast TCP. W temacie wiadomość jest "fire-and-forget" - jeśli nikt słucha, wiadomość po prostu znika. Jeśli nie tego chcesz, możesz skorzystać z "trwałych subskrypcji".

A Kolejka JMS jest miejscem docelowym 1 do 1 wiadomości. Wiadomość jest odbierana tylko przez jeden odbiornik (Uwaga: konsekwentne używanie subscribers dla 'topic client' I odbiorników dla queue client ' s pozwala uniknąć nieporozumień). Wiadomości wysyłane do kolejki są przechowywane na dysku lub pamięci do momentu, aż ktoś ją podniesie lub wygaśnie. Więc kolejki (i trwałe subskrypcje) potrzebujesz aktywnego zarządzania pamięcią masową, musisz myśleć o powolnych klientach.

W większości środowisk argumentowałbym, Tematy są lepszym wyborem, ponieważ zawsze można dodawać dodatkowe komponenty bez konieczności zmiany architektury. Dodane komponenty mogą być monitorowanie, rejestrowanie, analityka itp. Nigdy nie wiesz na początku projektu, jakie będą wymagania za 1 rok, 5 lat, 10 lat. Zmiana jest nieunikniona, przyjmij ją : -)

 15
Author: Axel Podehl,
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-05-15 11:43:30

Jeśli chodzi o zachowanie porządku, zobacz tę stronę ActiveMQ . W skrócie: zamówienie jest zachowane dla pojedynczych konsumentów, ale z wieloma konsumentami zamówienie dostawy nie jest gwarantowane.

 7
Author: eebbesen,
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
2013-07-30 12:06:49

Jeśli masz N, to:

Tematy JMS dostarczają wiadomości do N Z N Kolejki JMS dostarczają wiadomości do 1 z N

Powiedziałeś, że "szukasz ' rzeczy', która wyśle kopię wiadomości do każdego abonenta w tej samej kolejności, w jakiej wiadomość została odebrana przez brokera ActiveMQ."

Więc chcesz użyć tematu, aby wszyscy subskrybenci N otrzymali kopię wiadomości.

 3
Author: Hans Jespersen,
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
2015-01-17 23:55:50

TOPIC:: topic to komunikacja jeden do wielu... (multipoint lub publikuj/Subskrybuj) EX: - wyobraź sobie, że wydawca publikuje film w youtub, a następnie wszyscy jego subskrybenci otrzymają powiadomienie.... QUEVE:: queve to komunikacja jeden do jednego ... Ex: - po opublikowaniu prośby o doładowanie trafi tylko do jednego qreciever ... zawsze pamiętaj, że jeśli request goto wszystkie qreceivers następnie wielokrotne doładowanie stało się tak podczas tworzenia analizy, która jest odpowiednia dla aplikacji

 0
Author: siddartha kamble,
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
2018-06-10 15:33:32

Queue to obiekt zarządzany przez JMS służący do przechowywania wiadomości czekających na odbiorcę. Gdy wszyscy subskrybenci skorzystają z wiadomości , wiadomość zostanie usunięta z kolejki.

Temat polega na tym, że wszyscy subskrybenci tematu otrzymują tę samą wiadomość po opublikowaniu wiadomości.

 -1
Author: Geetha reddy Manukonda,
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
2014-02-07 20:29:39