Очередь сообщений (или почтовый ящик) — в информатике — программно-инженерный компонент, используемый для межпроцессного или межпотокового взаимодействия внутри одного процесса. Для обмена сообщениями используется очередь.

Парадигма очереди сообщений сродни шаблону «издатель — подписчик» и обычно является частью более крупной системы промежуточного программного обеспечения, ориентированной на обработку сообщений. Большинство систем обмена сообщениями в своих API поддерживают модели как очереди сообщений, так и «издатель — подписчик».

Обзор

править

Очереди сообщений предоставляют асинхронный протокол передачи данных, означая, что отправитель и получатель сообщения не обязаны взаимодействовать с очередью сообщений одновременно. Размещённые в очереди сообщения хранятся до тех пор, пока получатель не получит их.

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

Многие реализации очередей сообщений функционируют внутренне: внутри операционной системы или внутри приложения. Такие очереди существуют только для целей этой системы.

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

Применение

править

Для реализации очереди сообщений системный администратор устанавливает и настраивает программное обеспечение для организации очередей сообщений (диспетчер очереди или брокер) и определяет именованную очередь сообщений. Или они регистрируются в службе очередей сообщений.

Затем приложение регистрирует программную процедуру, которая «слушает» сообщения, помещённые в очередь.

Второе и последующие приложения могут подключаться к очереди и передавать на неё сообщение.

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

Существует множество вариантов точной семантики передачи сообщений, в том числе:

  • Долговечность — сообщения могут храниться в памяти, записываться на диск или даже передаваться в СУБД, если необходимость в надёжности указывает на более ресурсоёмкое решение.
  • Политики безопасности — какие приложения должны иметь доступ к этим сообщениям?
  • Политики очистки сообщений — очереди или сообщения могут иметь «время жизни».
  • Фильтрация сообщений — некоторые системы поддерживают фильтрацию данных, так что абонент может видеть только сообщения, соответствующие заранее определённым критериям.
  • Политики доставки — должны ли мы гарантировать доставку сообщения хотя бы один раз или не более одного раза?
  • Политики маршрутизации — в системе со многими серверами очереди какие серверы должны получать сообщения или сообщения очереди?
  • Политики дозирования — должны ли сообщения доставляться немедленно? Или система должна немного подождать и попытаться доставить много сообщений одновременно?
  • Критерии очерёдности — когда сообщение должно считаться «помещённым в очередь»? Когда в одной очереди? Или когда быть перенаправленным, по крайней мере, в одну удалённую очередь? Или ко всем очередям?
  • Уведомление о получении — издателю может потребоваться узнать, когда некоторые или все подписчики получили сообщение.

Все эти факторы могут существенно повлиять на семантику транзакций, надёжность и эффективность системы.

Стандарты и протоколы

править

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

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

  1. Advanced Message Queuing Protocol (AMQP) — многофункциональный протокол очереди сообщений
  2. STOMP[англ.] (STOMP) — простой текстовый протокол сообщений
  3. MQTT (ранее MQ Telemetry Transport) — протокол облегчённой очереди сообщений, особенно для встроенных устройств

Эти протоколы находятся на разных стадиях стандартизации и реализации. Первые два работают на том же уровне, что и HTTP, MQTT на уровне TCP/IP.

Синхронный или асинхронный

править

Многие из широко известных протоколов связи используются синхронно. Протокол HTTP, используемый во Всемирной паутине и в веб-сервисах, предлагает наглядный пример, когда пользователь отправляет запрос на веб-страницу, а затем ждёт ответа.

Однако существуют сценарии, в которых синхронное поведение не подходит. Например, AJAX (асинхронный JavaScript и XML) можно использовать для асинхронной отправки текстовых, JSON- или XML-сообщений для обновления части веб-страницы с более релевантной информацией.

Реализация в UNIX

править

В UNIX есть 2 распространенные реализации очередей. Одна является частью SYS V API, а другая — часть POSIX.

См. также

править

Примечания

править

Ссылки

править

📚 Artikel Terkait di Wikipedia

AMQP

маршрутизации. Принимает сообщения от поставщика и направляет их в message queue в соответствии с предопределёнными критериями. Такие критерии называют

SMTP

SMTP является функция инициализации обработки почтовой очереди (Remote Message Queue Starting), позволяющая запрашивающей системе получать все адресованные

Брокер сообщений

NL) Comverse Message Broker (Comverse Technology) Eclipse Mosquitto MQTT Broker (Eclipse Foundation) Enduro/X Transactional Message Queue (TMQ) Financial

Amazon SQS

SimpleDB Java Message Service IronMQ Message queue Message Queuing as a Service Oracle Messaging Cloud Service StormMQ Amazon SQS Amazon Simple Queue Service

Java Message Service

года) JMS 2.0 (21 мая 2013) Открытое программное обеспечение: Open Message Queue (Open MQ) Apache ActiveMQ OpenJMS JBoss Messaging JORAM (OW2) Сервер

Список портов TCP и UDP

русский) RFC 1898 — CyberCash Credit Card Protocol Version 0.8 RFC 6409 — Message Submission for Mail RFC 3195 — Reliable Delivery for Syslog RFC 3529 —

Вторжение России на Украину (с 2022)

обращения: 14 февраля 2025. Архивировано 24 февраля 2022 года. Russians queue for cash as West targets banks over Ukraine (англ.). Reuters (27 февраля

Yandex Cloud

кластерами Apache Hadoop) Data Transfer (инструмент для миграции БД) Message Queue (очереди для обмена сообщениями между приложениями). Контейнерная разработка