Добавил:
Developer Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Подготовка к зачету Гадасина за 16 часов.docx
Скачиваний:
31
Добавлен:
21.01.2024
Размер:
9 Мб
Скачать

47. Модель обмена сообщениями точка-точка и публикация-подписка

В ходе развития технологий обмена сообщениями появились два типа моделей асинхронного обмена сообщениями: Точка-Точка и Публикация/Подписка. Эти модели описывают, каким образом провайдер системы обмена сообщениями распространяет сообщения к пунктам назначения, т. е. они описывают кратность связей отправитель-получатель. Приложение может использовать обе модели. В следующих разделах мы опишем модели Точка-Точка и Публикация/Подписка.

Точка-Точка

Пример: Александра идет на почту, чтобы отправить Адаму посылку. Она подходит к окошку и вручает сотруднику посылку. Сотрудник забирает посылку и выдает Александре квитанцию. Адаму не нужно быть дома в момент отправки посылки. Александра уверена, что посылка будет доставлена Адаму в какой-то момент в будущем и может продолжать заниматься своими делами. Позже в какой-то момент Адам получает посылку.

Это пример модели обмена сообщениями точка-точка. Почтовое отделение здесь действует как механизм распределения посылок, гарантируя, что каждая посылка будет доставлена один раз. Использование почтового отделения отделяет акт отправки посылки от доставки посылки.

В классических системах обмена сообщениями модель «точка-точка» реализуется через очереди.. Каждое сообщение доставляется только одному из подписанных потребителей. Очереди обычно пытаются справедливо распределять сообщения между потребителями. Только один потребитель получит данное сообщение.

К очередям применяется термин «надежные» («durable»). Надежность — это свойство сервиса, которое гарантирует, что система обмена сообщениями будет сохранять сообщения при отсутствии активных подписчиков до тех пор, пока потребитель не подпишется на очередь для доставки сообщений.

Обмен сообщениями типа «Точка-точка» используется, когда вариант использования требует однократного действия с сообщением. В качестве примера можно привести внесение средств на счет или выполнение заказа на доставку. Мы обсудим позже, почему система обмена сообщениями сама по себе неспособна обеспечить однократную доставку и почему очереди могут в лучшем случае обеспечить гарантию доставки хотя бы один раз.

В модели обмена сообщениями Точка-Точка приложение-отправитель должно указать пункт назначения сообщения. Чтобы получить сообщение, приложение-получатель должно указать в ходе взаимодействия с провайдером тот же пункт назначения. Это означает, что здесь между отправителем и получателем существует связь один-к- одному. В модели Точка-Точка пункт назначения обычно называется очередью.

Публикация/Подписка

Пример: Габриэлла набирает номер конференции. Пока она подключена к конференции, она слышит все, что говорит спикер, вместе с остальными участниками вызова. Когда она отключается, она пропускает то, что сказано. При повторном подключении она продолжает слышать, что говорят.

Это пример модели обмена сообщениями публикация-подписка. Конференц-связь выступает, как широковещательный механизм. Говорящий человек не заботится о том, сколько людей в настоящее время присоединились к звонку — система гарантирует, что любой подключившийся в настоящий момент услышит, что говорится.

В классических системах обмена сообщениями модель обмена сообщениями «публикация-подписка» реализуется через топики. Топик предоставляет такой же способ широковещания, как и механизм конференц-связи. Когда сообщение отправляется в топик, оно распределяется по всем подписанным пользователям.

Топики обычно ненадежные (nondurable). Как и слушатель, который не слышит, что говорится на конференц-звонке, когда слушатель отключается, подписчики топика пропускают любые сообщения, которые отправляются в тот момент, когда они находятся в автономном режиме. По этой причине можно сказать, что топики предоставляют гарантию доставки не более одного раза для каждого потребителя.

Обмен сообщениями типа «публикация-подписка» обычно используется, когда сообщения носят информационный характер, и потеря одного сообщения — не особо значима. Например, топик может передавать показания температуры от группы датчиков один раз в секунду. Система, которая интересуется текущей температурой и которая подписывается на топик, не будет переживать, если она пропустит сообщение — другое поступит в ближайшее время.

В модели обмена сообщениями Публикация/Подписка приложение-отправитель публикует сообщения в пункте назначения. Несколько приложений-получателей могут подписаться на данный пункт назначения и получать копию всех публикуемых сообщений.

Когда сообщение приходит в пункт назначения, провайдер системы обмена сообщениями распространяет копию сообщения всем приложениям-получателям, которые подписались на данный пункт назначения. Это означает, что здесь существует потенциальная связь один-к-многим между отправителем и получателем. Однако возможна и ситуация, когда при поступлении сообщения подписчиков данного пункта назначения нет.