Rinda un tēma ir divi ziņojumapmaiņas modeļi, ko atbalsta JMS: 1. Point-to-point (PTP) rindas ziņojumapmaiņas modelis: Izmantojot šo ziņojumapmaiņas modeli, viena lietojumprogramma (t.i., ziņojuma veidotājs) var nosūtīt ziņojumu citai lietojumprogrammai (t.i., ziņojuma patērētājam). Šajā piegādes modelī ziņojuma galamērķa tips ir rinda (t.i., mērķa interfeisa ieviešanas klases instanci izveido sesijas interfeisa ieviešanas klases instance, izsaucot tās metodi createQueue un nododot rindas nosaukumu). Ziņojums vispirms tiek piegādāts noteiktā rindā ziņojumu servera pusē, un no turienes ziņojums tiek piegādāts patērētājam, kurš klausās šo rindu. Viena rinda var saistīt vairākus ziņojumu veidotājus un ziņojumu patērētājus, bet ziņojumu var piegādāt tikai vienam ziņojuma patērētājam. Ja vairāki ziņojumu patērētāji klausās ziņojumus rindā, JMS ziņojumu serveris nosaka, kurš ziņojuma patērētājs saņem nākamo ziņojumu, pamatojoties uz principu "rindas kārtība". Ja neviens ziņojuma patērētājs neklausās rindu, ziņojums paliek rindā, līdz ziņojuma patērētājs izveido savienojumu ar rindu. Šis ziņojumapmaiņas modelis ir slinks vai aptaujas modelis tradicionālajā nozīmē. Šajā modelī ziņojumi netiek automātiski virzīti ziņojuma patērētājam, bet ziņojuma patērētājs tos pieprasa no rindas. 2. Publicēt/abonēt (pub/sub) tēmas ziņojumapmaiņas modeli: Izmantojot šo ziņojumapmaiņas modeli, lietojumprogrammas var nosūtīt vienu ziņojumu vairākiem ziņojumu patērētājiem. Šajā piegādes modelī ziņojuma mērķa tips ir tēma (t.i., mērķa interfeisa ieviešanas klases instanci izveido sesijas interfeisa ieviešanas klases instance, izsaucot tās metodi createTopic un nododot tēmas nosaukumu). Ziņojumu vispirms publicē ziņojuma veidotājs konkrētā tēmu ziņojumu serverī, un pēc tam tas tiek piegādāts visiem patērētājiem, kuri ir abonējuši šo tēmu. Tēmu mērķi atbalsta arī ilgtermiņa abonementus. Ilgtermiņa abonements nozīmē, ka patērētājs ir reģistrēts tēmas mērķī, bet patērētājs var būt neaktīvs, kad ziņojums sasniedz galamērķi. Ziņojums tiks saņemts, kad patērētājs atkal būs aktīvs. Ja neviens no patērētājiem nav reģistrēts tēmas galamērķī, tēma saglabā ziņojumus tikai neaktīviem patērētājiem, kuri ir reģistrējušies ilgtermiņa abonementam. Atšķirībā no PTP ziņojumapmaiņas modeļa, kroga / apakšziņojumapmaiņas modelis ļauj vairākiem tēmu abonentiem saņemt vienu un to pašu ziņojumu. JMS glabā ziņojumu, līdz to saņem visi tēmas abonenti. Kroga / apakšziņojumapmaiņas modelis būtībā ir push modelis. Šajā modelī ziņojumi tiek automātiski pārraidīti, un ziņojumu patērētājiem nav aktīvi jāpieprasa vai jāaptaujā tēmas, lai saņemtu jaunus ziņojumus. Īpašās atšķirības ir šādas:
tips
| Tēma
| Rinda | Pārskats
| Publicēšana Abonēšana ziņojumapmaiņa Abonēšanas ziņojumu publicēšana
| Punkts uz punktu
| Nav valsts
| Tēmas dati pēc noklusējuma ir bezvalstnieki.
| Rindas dati pēc noklusējuma tiek saglabāti kā fails MQ serverī, piemēram, aktīvais MQ parasti tiek glabāts sadaļā $AMQ_HOME\data\kr-store\data. To var konfigurēt arī kā DB krātuvi.
| Integritātes garantija
| Nav garantijas, ka abonents pieņems visus izdevēja publicētos datus.
| Rinda garantē, ka saņēmējs var saņemt visus datus.
| vai ziņojums tiks zaudēts
| Vispārīgi runājot, kad izdevējs publicē ziņojumu par tēmu, ziņojumu var saņemt tikai apakšgrupa, kas klausās tēmas adresi. Ja nav apakšklausīšanās, tēma tiek zaudēta.
| Sūtītājs nosūta ziņojumu mērķa rindai, un saņēmējs var saņemt ziņojumus šajā rindā asinhroni. Ziņojumi rindā netiks zaudēti, ja pagaidām nav saņēmēja, kas tos paņemtu.
| Ziņojumu izlaišanas saņemšanas politika
| Ziņojumu publicēšanas un saņemšanas politika "viens pret daudziem", vairāki abonenti, kas klausās vienu un to pašu tēmas adresi, var saņemt izdevēja sūtītos ziņojumus. Apakš saņem paziņojumu mq serverim
| Viens pret vienu ziņojumu publicēšanas un saņemšanas politikas, sūtītāja sūtītos ziņojumus var saņemt tikai viens saņēmējs. Pēc tam, kad saņēmējs saņem, MQ serveris paziņo MQ serverim, ka tas ir saņemts, un MQ serveris izdzēš rindā esošos ziņojumus vai veic citas darbības ar tiem.
|
|