Queue и Topic са два модела за съобщения, поддържани от JMS: 1. Модел на съобщения от точка до точка (PTP): При този модел на съобщения едно приложение (т.е. създателят на съобщението) може да изпрати съобщение към друго приложение (т.е. потребителя на съобщението). В този модел на доставка типът на дестинацията на съобщението е опашка (т.е. екземплярът на клас за имплементация на интерфейса Destination се създава от екземпляра на интерфейса Session чрез извикване на метода createQueue и въвеждане на името на опашката). Съобщението първо се доставя до конкретна опашка от страната на сървъра за съобщения, а оттам се доставя до потребител, който слуша тази опашка. Същата опашка може да свързва няколко производители на съобщения и потребители на съобщения, но едно съобщение може да бъде доставено само до един потребител на съобщение. Ако няколко потребители на съобщения слушат съобщенията в опашката, JMS сървърът определя кой потребител на съобщения получава следващото съобщение въз основа на принципа "първи дошъл, пръв дошъл". Ако никой потребител на съобщения не слуша опашката, съобщението остава в нея, докато потребителят не се свърже с нея. Този модел на съобщения е мързелив или анкетиращ модел в традиционния смисъл. В този модел съобщенията не се изпращат автоматично към потребителя на съобщението, а се заявяват от опашката от потребителя на съобщението. 2. Модел на публикуване/абониране (публикуване/подредакция) на теми: С този модел на съобщения приложенията могат да изпращат едно и също съобщение до множество потребители на съобщения. В този модел на доставка типът на destination съобщение е темата (т.е. екземплярът на клас за имплементация на интерфейса Destination се създава от екземпляра на интерфейса Session чрез извикване на метода createTopic и въвеждане на името на темата). Първо съобщението се публикува на конкретна тема в сървъра за съобщения от производителя на съобщението, който след това го доставя на всички потребители, абонирани за темата. Тематичните цели също подкрепят дългосрочни абонаменти. Дългосрочен абонамент означава, че потребителят е записан в целта на темата, но потребителят може да бъде неактивен, когато съобщението достигне до целта. Съобщението ще бъде получено, когато потребителят отново стане активен. Ако никой от потребителите не е регистриран в дадена тематична дестинация, темата запазва съобщения само за неактивни потребители, които са се абонирали за дългосрочен абонамент. За разлика от PTP модела за съобщения, моделът на pub/sub позволява на множество абонати по тема да получават едно и също съобщение. JMS задържа съобщението, докато всички абонати на темата го получат. Моделът за съобщения чрез публикации/субтитри е по същество модел на push. В този модел съобщенията се излъчват автоматично и потребителите на съобщения не е необходимо активно да искат или анкетират теми, за да получат нови съобщения. Конкретните разлики са следните:
вид
| Тема
| Опашка | Обща информация
| Публикувай Абонирай се съобщения Публикувай абонаментни съобщения
| Точка до точка
| Няма държава
| Данните за темата по подразбиране са без състояние.
| Данните от опашката се запазват като файл на MQ сървъра по подразбиране, например Active MQ обикновено се съхранява под $AMQ_HOME\data\kr-store\data. Може да бъде конфигуриран и като база данни.
| Гаранция за целостта
| Няма гаранция, че всяка публикувана от издателя информация ще бъде приета от абоната.
| Опашката гарантира, че всяко парче данни може да бъде получено от получателя.
| дали посланието ще бъде изгубено
| Обикновено, когато издател публикува съобщение по дадена тема, само подредакцията, която слуша адреса на темата, може да получи съобщението. Ако няма слушане на субредитите, темата се губи.
| Изпращачът изпраща съобщение до целевата опашка, а получателят може да получава съобщения в тази опашка асинхронно. Съобщенията в опашката няма да се губят, ако няма получател, който да ги приеме за момента.
| Политика за приемане на съобщения
| Политика за публикуване и получаване на съобщения "едно към много" – множество субредити, които слушат един и същ адрес на темата, могат да получават съобщения, изпратени от издателя. Субредитът получава известие до mq сървъра
| Политики за публикуване и получаване на съобщения едно към едно, съобщения, изпратени от подател, могат да бъдат получени само от един получател. След като получателят получи, MQ сървърът уведомява MQ сървъра, че е получен, и MQ сървърът изтрива или предприема други действия върху съобщенията в опашката.
|
|