Eilė ir tema yra du pranešimų modeliai, kuriuos palaiko JMS: 1. "Point-to-point" (PTP) eilės pranešimų modelis: Naudojant šį pranešimų modelį, viena programa (t. y. pranešimo gamintojas) gali siųsti pranešimą kitai programai (t. y. pranešimo vartotojui). Šiame pristatymo modelyje pranešimo paskirties vietos tipas yra eilė (t. y. paskirties sąsajos diegimo klasės egzempliorių sukuria seanso sąsajos diegimo klasės egzempliorius, iškviesdamas jo metodą createQueue ir perduodamas eilės pavadinimą). Pranešimas pirmiausia pristatomas į konkrečią eilę pranešimų serverio pusėje, o iš ten pranešimas pristatomas vartotojui, kuris klausosi šios eilės. Ta pati eilė gali susieti kelis pranešimų gamintojus ir pranešimų vartotojus, tačiau pranešimą galima pristatyti tik vienam pranešimo vartotojui. Jei keli pranešimų vartotojai klausosi pranešimų eilėje, JMS pranešimų serveris nustato, kuris pranešimo vartotojas gauna kitą pranešimą pagal principą "pirmas atėjai, pirmas atėjai". Jei nė vienas pranešimo vartotojas neklauso eilės, pranešimas lieka eilėje, kol pranešimo vartotojas prisijungia prie eilės. Šis pranešimų modelis yra tingus arba apklausos modelis tradicine prasme. Pagal šį modelį pranešimai nėra automatiškai siunčiami pranešimo vartotojui, o pranešimo vartotojas jų prašo iš eilės. 2. Publikuoti / prenumeruoti (pub / sub) temų pranešimų modelį: Naudodamos šį pranešimų siuntimo modelį, programos gali siųsti vieną pranešimą keliems pranešimų vartotojams. Šiame pristatymo modelyje pranešimo paskirties vietos tipas yra tema (t. y. paskirties sąsajos diegimo klasės egzempliorių sukuria sesijos sąsajos diegimo klasės egzempliorius, iškviesdamas savo metodą createTopic ir perduodamas temos pavadinimą). Pranešimą pirmiausia publikuoja konkrečia tema pranešimų serveryje pranešimo gamintojas, kuris pristato pranešimą visiems vartotojams, užsiprenumeravusiems temą. Temų tikslai taip pat palaiko ilgalaikes prenumeratas. Ilgalaikė prenumerata reiškia, kad vartotojas yra įtrauktas į temos tikslą, tačiau vartotojas gali būti neaktyvus, kai pranešimas pasiekia paskirties vietą. Pranešimas bus gautas, kai vartotojas vėl bus aktyvus. Jei nė vienas vartotojas nėra užsiregistravęs temos paskirties vietoje, tema išsaugo pranešimus tik neaktyviems vartotojams, užsiregistravusiems ilgalaikei prenumeratai. Skirtingai nuo PTP pranešimų modelio, pub / sub pranešimų modelis leidžia keliems temų prenumeratoriams gauti tą patį pranešimą. JMS saugo pranešimą, kol jį gaus visi temos prenumeratoriai. Pub / sub pranešimų modelis iš esmės yra stūmimo modelis. Pagal šį modelį pranešimai transliuojami automatiškai, o pranešimų vartotojams nereikia aktyviai prašyti ar apklausti temų, kad gautų naujų pranešimų. Konkretūs skirtumai yra šie:
rūšis
| Tema
| Eilė | Apžvalga
| Publikuoti Prenumeruoti pranešimus Publikuoti prenumeratos pranešimus
| Taškas į tašką
| Nėra valstybės
| Temos duomenys pagal numatytuosius nustatymus yra be būsenos.
| Eilės duomenys pagal numatytuosius nustatymus įrašomi kaip failas MQ serveryje, pavyzdžiui, aktyvus MQ paprastai saugomas $AMQ_HOME\data\kr-store\data. Jis taip pat gali būti sukonfigūruotas kaip DB saugykla.
| Vientisumo garantija
| Nėra garantijos, kad prenumeratorius priims visus leidėjo paskelbtus duomenis.
| Eilė garantuoja, kad imtuvas gali gauti visus duomenis.
| ar pranešimas bus prarastas
| Paprastai kalbant, kai leidėjas paskelbia pranešimą tema, pranešimą gali gauti tik tas abonentas, kuris klausosi temos adreso. Jei nėra papildomo klausymo, tema prarandama.
| Siuntėjas siunčia pranešimą į paskirties eilę, o gavėjas gali gauti pranešimus šioje eilėje asinchroniškai. Pranešimai eilėje nebus prarasti, jei kol kas nėra gavėjo, kuris juos paimtų.
| Pranešimo išleidimo gavimo strategija
| Pranešimų publikavimo ir gavimo politika "Vienas su daugeliu", keli abonentai, klausantys to paties temos adreso, gali gauti leidėjo siunčiamus pranešimus. Sub gauna pranešimą į mq serverį
| Asmeninė pranešimų publikavimo ir gavimo politika, siuntėjo siunčiamus pranešimus gali gauti tik vienas gavėjas. Kai gavėjas gauna, MQ serveris praneša MQ serveriui, kad jis buvo gautas, o MQ serveris panaikina arba atlieka kitus veiksmus su eilėje esančiais pranešimais.
|
|