Interested Article - Очередь сообщений
- 2020-01-21
- 2
Очередь сообщений (или почтовый ящик ) — в информатике — программно-инженерный компонент , используемый для межпроцессного или межпотокового взаимодействия внутри одного процесса . Для обмена сообщениями используется очередь .
Парадигма очереди сообщений сродни шаблону « издатель — подписчик » и обычно является частью более крупной системы промежуточного программного обеспечения, ориентированной на обработку сообщений . Большинство систем обмена сообщениями в своих API поддерживают модели как очереди сообщений, так и «издатель — подписчик».
Обзор
Очереди сообщений предоставляют асинхронный протокол передачи данных , означая, что отправитель и получатель сообщения не обязаны взаимодействовать с очередью сообщений одновременно. Размещённые в очереди сообщения хранятся до тех пор, пока получатель не получит их.
Очереди сообщений имеют неявные или явные ограничения на размер данных, которые могут передаваться в одном сообщении, и количество сообщений, которые могут оставаться в очереди.
Многие реализации очередей сообщений функционируют внутренне: внутри операционной системы или внутри приложения . Такие очереди существуют только для целей этой системы.
Другие реализации позволяют передавать сообщения между различными компьютерными системами , потенциально подключая несколько приложений и несколько операционных систем. Эти системы очередей сообщений обычно обеспечивают расширенную функциональность для обеспечения устойчивости , чтобы гарантировать, что сообщения не будут «потеряны» в случае сбоя системы.
Применение
Для реализации очереди сообщений системный администратор устанавливает и настраивает программное обеспечение для организации очередей сообщений (диспетчер очереди или брокер) и определяет именованную очередь сообщений. Или они регистрируются в службе очередей сообщений.
Затем приложение регистрирует программную процедуру , которая « слушает » сообщения, помещённые в очередь .
Второе и последующие приложения могут подключаться к очереди и передавать на неё сообщение .
Программное обеспечение менеджера очередей сохраняет сообщения до тех пор, пока принимающее приложение не подключится, а затем вызовет зарегистрированную программную процедуру. Затем приложение-получатель обрабатывает сообщение соответствующим образом.
Существует множество вариантов точной семантики передачи сообщений, в том числе:
- Долговечность — сообщения могут храниться в памяти , записываться на диск или даже передаваться в СУБД , если необходимость в надёжности указывает на более ресурсоёмкое решение.
- Политики безопасности — какие приложения должны иметь доступ к этим сообщениям?
- Политики очистки сообщений — очереди или сообщения могут иметь « время жизни ».
- Фильтрация сообщений — некоторые системы поддерживают фильтрацию данных, так что абонент может видеть только сообщения, соответствующие заранее определённым критериям.
- Политики доставки — должны ли мы гарантировать доставку сообщения хотя бы один раз или не более одного раза?
- Политики маршрутизации — в системе со многими серверами очереди какие серверы должны получать сообщения или сообщения очереди?
- Политики дозирования — должны ли сообщения доставляться немедленно? Или система должна немного подождать и попытаться доставить много сообщений одновременно?
- Критерии очерёдности — когда сообщение должно считаться «помещённым в очередь»? Когда в одной очереди? Или когда быть перенаправленным, по крайней мере, в одну удалённую очередь? Или ко всем очередям?
- Уведомление о получении — издателю может потребоваться узнать, когда некоторые или все подписчики получили сообщение.
Все эти факторы могут существенно повлиять на семантику транзакций, надёжность и эффективность системы.
Стандарты и протоколы
Исторически очередь сообщений использовала собственные закрытые протоколы, которые ограничивали способность различных операционных систем или языков программирования взаимодействовать в гетерогенном множестве сред.
Появились три стандарта, которые используются в реализациях очереди сообщений с открытым исходным кодом :
- Advanced Message Queuing Protocol (AMQP) — многофункциональный протокол очереди сообщений
- (STOMP) — простой текстовый протокол сообщений
- MQTT (ранее MQ Telemetry Transport) — протокол облегчённой очереди сообщений, особенно для встроенных устройств
Эти протоколы находятся на разных стадиях стандартизации и реализации. Первые два работают на том же уровне, что и HTTP , MQTT на уровне TCP/IP .
Синхронный или асинхронный
Многие из широко известных протоколов связи используются синхронно. Протокол HTTP , используемый во Всемирной паутине и в веб-сервисах , предлагает наглядный пример, когда пользователь отправляет запрос на веб-страницу, а затем ждёт ответа.
Однако существуют сценарии, в которых синхронное поведение не подходит. Например, AJAX (асинхронный JavaScript и XML ) можно использовать для асинхронной отправки текстовых, JSON - или XML-сообщений для обновления части веб-страницы с более релевантной информацией.
Реализация в UNIX
В UNIX есть 2 распространенные реализации очередей. Одна является частью SYS V API, а другая — часть POSIX .
См. также
- Apache Kafka
- AMQP
- Amazon SQS
- Apache ActiveMQ
- Apache Qpid
- IBM WebSphere MQ
- Java Message Service
- MQTT
- RabbitMQ
Примечания
Ссылки
- от 8 апреля 2017 на Wayback Machine (англ.)
- от 31 октября 2017 на Wayback Machine (англ.)
- (англ.)
Для улучшения этой статьи
желательно
:
|
- 2020-01-21
- 2