Kolejka i Temat to dwa modele komunikatów obsługiwane przez JMS: 1. Model komunikatów punkt-punkt (PTP): W tym modelu wiadomości jedna aplikacja (czyli producent wiadomości) może wysłać wiadomość do innej aplikacji (czyli odbiorcy wiadomości). W tym modelu dostarczania typ docelowy wiadomości jest kolejką (tzn. instancja klasy implementacji interfejsu docelowego jest tworzona przez instancję klasy implementacji interfejsu Session poprzez wywołanie metody createQueue i przekazanie nazwy kolejki). Wiadomość jest najpierw dostarczana do konkretnej kolejki po stronie serwera wiadomości, a następnie przekazywana jest odbiorcy, który słucha tej kolejki. Ta sama kolejka może łączyć wielu producentów wiadomości i odbiorców wiadomości, ale wiadomość może być dostarczona tylko do jednego odbiorcy wiadomości. Jeśli wielu odbiorców wiadomości słucha wiadomości w kolejce, serwer wiadomości JMS decyduje, który konsument wiadomości otrzyma następną wiadomość na podstawie zasady "kto pierwszy, ten lepszy". Jeśli żaden odbiorca wiadomości nie słucha kolejki, wiadomość pozostaje w kolejce aż do momentu, gdy konsument wiadomości połączy się z kolejką. Ten model przekazu jest modelem leniwego lub opartego na sondażach w tradycyjnym sensie. W tym modelu wiadomości nie są automatycznie wysyłane do odbiorcy wiadomości, lecz są przez niego żądane z kolejki. 2. Model komunikacji publikuj/subskrybuj (publik/sub): Dzięki temu modelu komunikacji aplikacje mogą wysyłać jedną wiadomość do wielu odbiorców wiadomości. W tym modelu dostarczania typ docelowy wiadomości to temat (tzn. instancja implementacji interfejsu docelowego jest tworzona przez instancję klasy implementacji interfejsu sesyjnego poprzez wywołanie metody createTopic i przekazanie nazwy tematu). Wiadomość jest najpierw publikowana do konkretnego tematu na serwerze wiadomości przez twórcę wiadomości, który następnie przekazuje ją wszystkim konsumentom subskrybującym dany temat. Cele tematyczne wspierają także długoterminowe subskrypcje. Subskrypcja długoterminowa oznacza, że konsument jest zapisany w celu tematycznym, ale może być nieaktywny, gdy wiadomość dotrze do celu. Wiadomość zostanie otrzymana, gdy konsument znów będzie aktywny. Jeśli żaden z konsumentów nie jest zapisany w miejscu tematycznym, temat zachowuje wiadomości tylko dla nieaktywnych konsumentów, którzy zarejestrowali się na długoterminową subskrypcję. W przeciwieństwie do modelu wiadomości PTP, model komunikatów pub/sub pozwala wielu subskrybentom otrzymywać tę samą wiadomość. JMS przechowuje wiadomość do momentu, gdy wszyscy subskrybaci tematu ją otrzymają. Model komunikatów pub/sub to w zasadzie model push. W tym modelu wiadomości są nadawane automatycznie, a odbiorcy wiadomości nie muszą aktywnie prosić ani pytać o tematy, aby otrzymać nowe wiadomości. Konkretne różnice są następujące:
typ
| Temat
| Kolejka | Przegląd
| Publikuj Subskrybuj wiadomości Publikuj wiadomości subskrypcyjne
| Punkt-punkt punkt-punkt punkt-punkt
| Nie ma żadnego stanu
| Dane tematów są domyślnie bezstanowe.
| Dane kolejki są domyślnie zapisywane jako plik na serwerze MQ, na przykład Active MQ jest zwykle przechowywany pod $AMQ_HOME\data\kr-store\data. Może być również skonfigurowany jako magazyn baz danych.
| Gwarancja integralności
| Nie ma gwarancji, że każdy fragment danych opublikowany przez wydawcę zostanie zaakceptowany przez subskrybenta.
| Kolejka gwarantuje, że każdy fragment danych może zostać odebrany przez odbiorcę.
| czy przekaz zostanie utracony
| Ogólnie rzecz biorąc, gdy wydawca publikuje wiadomość do tematu, tylko subreddit słuchający adresu tematu może ją otrzymać. Jeśli nie ma suba, który nie słucha, temat ginie.
| Nadawca wysyła wiadomość do docelowej kolejki, a odbiorca może odbierać wiadomości w tej kolejce asynchronicznie. Wiadomości w kolejce nie zostaną utracone, jeśli nie będzie odbiorcy, który mógłby je odebrać na razie.
| Polityka odbioru komunikatów
| Polityka publikowania i odbierania wiadomości jeden do wielu – wielu subskrybentów słuchających tego samego tematu może otrzymywać wiadomości wysyłane przez wydawcę. Sub otrzymuje powiadomienie do serwera mq
| Polityki publikowania i odbierania wiadomości jeden do jednego, wiadomości wysyłane przez nadawcę mogą być odebrane tylko przez jednego odbiorcę. Po odebraniu przez odbiorcę, serwer MQ powiadamia serwer MQ o odebraniu, a serwer MQ usuwa lub podejmuje inne działania na wiadomościach w kolejce.
|
|