RabbitMQ
Кратко про RabbitMQ
RabbitMQ - брокер сообщений, являющийся базовым в Т2 Интеграция.
Архитектура RabbitMQ-server основана на Erlang и BEAM.
RabbitMQ — высокопроизводительная платформа, написанная на Erlang, основанная на Open Telecom Platform, а значит — очень надежная и масштабированная система, часто применяемая в телекоммуникационных приложениях и других подобных системах. Интерфейс только для Java и C++. Система поддерживает стандарт AMQP (Open Standard for Messaging Middleware).
RabbitMQ – это брокер сообщений с открытым исходным кодом. Он маршрутизирует собщения по всем базовым принципам протокола AMQP описанным в спецификации. Отправитель передает сообщение брокеру а тот доставляет его получателю. RabbitMQ реализует и дополняет протокол AMQP.
Основная идея модели обмена сообщениями в RabbitMQ заключается в том, что producer (издатель) не отправляет сообщения непосредственно в очередь. На самом деле и довольно часто издатель даже не знает, будет ли сообщение вообще доставлено в какую-либо очередь.
Вместо этого издатель может отправлять сообщения только на обмен. С одной стороны, обмен получает сообщения от издателей, а с другой — отправляет их в очереди. Обмен должен точно знать, что делать с полученным сообщением. Должно ли оно быть добавлено в определенную очередь? Должно ли оно быть добавлено в несколько очередей? Или сообщение нужно игнорировать.
Кратко работу RabbitMQ можно описать следующим образом:
- Издатель отправляет сообщение определенному обменнику
- Обменник, получив сообщение, маршрутизирует его в одну или несколько очередей в соответствии с правилами привязки между ним и очередью
- Очередь хранит ссылку на это сообщение. Само сообщение хранится в оперативной памяти или на диске
- Как только потребитель готов получить сообщение из очереди, сервер создает копию сообщения по ссылке и отправляет
- Потребитель получает сообщение и отправляет брокеру подтверждение
- Брокер, получив подтверждение, удаляет копию сообщения из очереди. Затем удаляет из оперативной памяти и с диска