Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
servers:rabbitmq [2015/11/27 02:32] – [Как работает RabbitMQ?] mirocowservers:rabbitmq [2016/02/16 14:39] (текущий) mirocow
Строка 1: Строка 1:
-====== RabbitMQ ======+{{tag>message-broker-server server daemon}}
  
-Это один из наиболее популярных брокеров сообщений с открытым исходным кодом, который поставляется по лицензии Mozilla Public License v1.1 как реализация протокола Advanced Message Queuing Protocol. Разработанный на языке Erlang, RabbitMQ довольно прост в использовании и установке. 
  
 +====== RabbitMQ - Сетевой брокер сообщений ======
 +
 +RabbitMQ ‒ это брокер сообщений. Его основная цель ‒ принимать и отдавать сообщения. Его можно представлять себе, как почтовое отделение: когда Вы бросаете письмо в ящик, Вы можете быть уверены, что рано или поздно почтальон доставит его адресату [видимо, автор ни разу не имел дела с Почтой России]. В этой аналогии RabbitMQ является одновременно и почтовым ящиком, и почтовым отделением, и почтальоном.
 +
 +===== Терминалогия =====
 +
 +  * Producer (поставщик) ‒ программа, отправляющая сообщения.
 +  * Queue (очередь) ‒ имя «почтового ящика». Она существует внутри RabbitMQ. Хотя сообщения проходят через RabbitMQ и приложения, хранятся они только в очередях. Очередь не имеет ограничений на количество сообщений, она может принять сколь угодно большое их количество ‒ можно считать ее бесконечным буфером. Любое количество поставщиков может отправлять сообщения в одну очередь, также любое количество подписчиков может получать сообщения из одной очереди.
 +  * Consumer (подписчик) ‒ программа, принимающая сообщения. Обычно подписчик находится в состоянии ожидания сообщений.
 +
 +Поставщик, подписчик и брокер не обязаны находиться на одной физической машине, обычно они находятся на разных.
 ===== Как работает RabbitMQ? ===== ===== Как работает RabbitMQ? =====
  
Строка 8: Строка 18:
 RabbitMQ предоставляет интерфейс, соединяющий отправителей (Publishers) с получателями (Consumers) при помощи брокера, который распределяет данные в соответствующие списки — очереди сообщений (Message Queues). RabbitMQ предоставляет интерфейс, соединяющий отправителей (Publishers) с получателями (Consumers) при помощи брокера, который распределяет данные в соответствующие списки — очереди сообщений (Message Queues).
  
-|APPLICATION|       EXCHANGE|        TASK LIST|        WORKER| +|APPLICATION     |       EXCHANGE|        TASK LIST|        WORKER| 
-|[DATA]| -------> [DATA]| ---> [D]+[D][D][D]| --->  [DATA]| +|[DATA]          |     [DATA]|          [D]+[D][D][D]|    [DATA]| 
-|Publisher|        EXCHANGE|          Queue|         Consumer|+|Publisher       |        EXCHANGE|          Queue|         Consumer|
  
 ===== Преимущества RabbitMQ ===== ===== Преимущества RabbitMQ =====
Строка 23: Строка 33:
  
 ===== Установка RabbitMQ ===== ===== Установка RabbitMQ =====
 +
 +  $ apt-get install rabbitmq-server
 +
 +===== Запуск и Провека =====
 +
 +<code sh>
 +# Запуск:
 +service rabbitmq-server start
 +# Остановка:
 +service rabbitmq-server stop
 +# Перезапуск:
 +service rabbitmq-server restart
 +# Проверка статуса:
 +service rabbitmq-server status  
 +</code>
 +===== Установка плагинов =====
 +
 +==== Заголовок ====
 +
 +  $ rabbitmq-plugins enable rabbitmq_amqp1_0 rabbitmq_management rabbitmq_management_visualiser rabbitmq_mqtt rabbitmq_stomp
 +  
 +==== Заголовок ====
 +  
 +  $ rabbitmq-plugins enable rabbitmq_management rabbitmq_management_visualiser rabbitmq_stomp
 +===== Запуск консоли =====
 +
 +Разрешаем доступ к консоли по guest извне 
 +
 +<note important>Только для разработки\\
 +<code sh>
 +echo "[{rabbit, [{loopback_users, []}]}]." > /etc/rabbitmq/rabbitmq.config
 +</code>
 +</note>
 +
 +По умолчанию консоль будет доступна по порту 15672 на адресе **http://[IP_адрес_сервера]:15672**
 +
 +===== Клиенты =====
 +
 +  * [[php:modules:rabbitmq|]]
 +  * [[servers:rabbitmq:rabbitmq_management|]]
  
 ===== Ссылки ===== ===== Ссылки =====
  
-  * http://habrahabr.ru/post/149694/ 
   * http://habrahabr.ru/post/150134/   * http://habrahabr.ru/post/150134/
   * http://habrahabr.ru/post/200870/   * http://habrahabr.ru/post/200870/
   * http://habrahabr.ru/post/201096/   * http://habrahabr.ru/post/201096/
   * http://habrahabr.ru/post/201178/   * http://habrahabr.ru/post/201178/
 +  * [[http://habrahabr.ru/post/149694/|RabbitMQ tutorial 1 — Hello World (python)]]
 +  * [[http://habrahabr.ru/post/150134/|RabbitMQ tutorial 2 — Очередь задач (python)]]
 +  * [[http://habrahabr.ru/post/200870/|RabbitMQ tutorial 3 — Публикация/Подписка (php)]]
 +  * [[http://habrahabr.ru/post/201096/|RabbitMQ tutorial 4 — Роутинг (php)]]
 +  * [[http://habrahabr.ru/post/201178/|RabbitMQ tutorial 5 — Тематики (php)]]
 +  * [[http://habrahabr.ru/post/236221/|RabbitMQ tutorial 6 — Удаленный вызов процедур (эта статья, python)]]
 +  * http://habrahabr.ru/post/271807/
 +  * [[http://habrahabr.ru/post/119839/|Моделируем полёт PHP на крыльях Erlang]]
 +  * [[http://www.8host.com/blog/ustanovka-i-upravlenie-rabbitmq/|УСТАНОВКА И УПРАВЛЕНИЕ RABBITMQ]]
 +  * http://habrahabr.ru/post/235505/