Внешние очереди
Прот окол AMQP (Advanced Message Queueing Protocol) – это открытый протокол, который асинхронно передает сообщения между различными приложениями на высокой скорости и с минимальной задержкой.
Для поддержки связи с внешними сервисами по этому протоколу используется брокер сообщений RabbitMQ. Брокеры сообщений создают двунаправленное соединение с каждой системой приложений. Через это соединение передаются сообщения, они маршрутизируются в соответствующие пункты назначения.
AMQP основан на трех понятиях:
- Сообщение (message) – единица передаваемых данных, основная его часть (содержание) никак не интерпретируется сервером, к сообщению могут быть прицеплены структурированные заголовки.
- Точка обмена (exchange) – в нее отправляются сообщения, при этом в точке обмена сообщения не хранятся.
- Очередь (queue) – здесь хранятся сообщения до тех пор, пока не будет забраны потребителем. Потребитель всегда забирает сообщения из одной или нескольких очередей.
Последовательность обработки
- Все сообщения, генерируемые приложением-производителем (producer), сначала принимаются в точку обмена (exchange).
- В этой точке они распределяются по очередям. Для отправки сообщений в соответствующие очереди используются привязки (bindings).
- Отправленные сообщения будут оставаться в этой очереди до тех пор, пока приложение-потребитель (consumer) не подключится и не получит сообщение.
- Потребитель получает сообщения.
- В AMQP предусмотрен механизм подтверждения доставки: сообщение не будет удалено из очереди, пока не будет подтверждения о получении от потребителя.
- В случае отрицательного ответа сообщение может быть отправлено повторно или удалено из очереди в зависимости от настроек конфигурации производителем при отправке сообщения.