Advance Messaging Queuing Protocol - протокол уровня приложения(на ряду HTTP, SSH, LDAP), который позволяет обмениваться сообщениями между подмодулями системы или даже между разными приложениями, работа происходит через посредник-брокер, который умеет маршрутизировать, создавать очереди, подписывать клиентов на определенный тип сообщений.
Был написан как стандартизирующее обьединение протоколов JMS(jvm) и NMS(.net).
В его основе лежит три основных понятия:
1) Сообщение (message) - вольного содержания, но может содержить также предопределенные заголовки.
2) Точка обмена (exchange) - сюда присылаются сообщения клиентами, сообщения распределяются в очередя, сообщение в зависимости от условий может попадать или в одну очередь или в несколько, сообщения не хранятся в точках обмена они хранятся только в очередях. Клиенты забирают свои сообщения из очередей. Точки обмена есть трех типов:
- fanout - такой ексчендж размножает сообщения во все присоединенные к нему очередя, обеспечивая таким образом клоны очередей;
- direct - сообщение попадает в очередь с именем совпадающим с ключем маршрутизации(routing key) сообщения;
- topic - к ключам маршрутизации применяется некие маски-правила которые привязаны к очередям, таким образом ексчендж ведет себя как fanout, но при этом каждая очередь имеет определенный фильтр, позволяющий толи принимать, толи отвергать присланное сообщение.
3) Привязка(binding) - именно эта штука привязывает конкретную очередь к конкретному типу точки обмена, обьявляя фильтры под которые конкретное сообщение будет подходить для попадания в очередь.
4) Очередь (queue) - хранилище сообщений для клиентов, сообщения пропадают из очереди после того как клиет забирает его, клиенты могут кормиться на нескольких очередях.
Могут быть нескольких типов:
- классические;
- round-robin (несколько приложений подымаются и обьявляют одну и ту же очередь для потребления(по сути это одно приложение с которого создается несколько процессов, которые выполняют одну и ту же задачу), таким образом все они будут потреблять с нее. В эту очередь приходят сообщения, которые запускают долгоирающие задачи в потребителях, таким образом, первый кто свободен и берет на себя выполнение задачи, по скольку их много задачи не залеживаются, а решаются клонами-воркерами паралельно);
- store;
- forward
Путевое объяснение на сайте RabbitMQ - реализация протокола.
Был написан как стандартизирующее обьединение протоколов JMS(jvm) и NMS(.net).
В его основе лежит три основных понятия:
1) Сообщение (message) - вольного содержания, но может содержить также предопределенные заголовки.
2) Точка обмена (exchange) - сюда присылаются сообщения клиентами, сообщения распределяются в очередя, сообщение в зависимости от условий может попадать или в одну очередь или в несколько, сообщения не хранятся в точках обмена они хранятся только в очередях. Клиенты забирают свои сообщения из очередей. Точки обмена есть трех типов:
- fanout - такой ексчендж размножает сообщения во все присоединенные к нему очередя, обеспечивая таким образом клоны очередей;
- direct - сообщение попадает в очередь с именем совпадающим с ключем маршрутизации(routing key) сообщения;
- topic - к ключам маршрутизации применяется некие маски-правила которые привязаны к очередям, таким образом ексчендж ведет себя как fanout, но при этом каждая очередь имеет определенный фильтр, позволяющий толи принимать, толи отвергать присланное сообщение.
3) Привязка(binding) - именно эта штука привязывает конкретную очередь к конкретному типу точки обмена, обьявляя фильтры под которые конкретное сообщение будет подходить для попадания в очередь.
4) Очередь (queue) - хранилище сообщений для клиентов, сообщения пропадают из очереди после того как клиет забирает его, клиенты могут кормиться на нескольких очередях.
Могут быть нескольких типов:
- классические;
- round-robin (несколько приложений подымаются и обьявляют одну и ту же очередь для потребления(по сути это одно приложение с которого создается несколько процессов, которые выполняют одну и ту же задачу), таким образом все они будут потреблять с нее. В эту очередь приходят сообщения, которые запускают долгоирающие задачи в потребителях, таким образом, первый кто свободен и берет на себя выполнение задачи, по скольку их много задачи не залеживаются, а решаются клонами-воркерами паралельно);
- store;
- forward
Путевое объяснение на сайте RabbitMQ - реализация протокола.
Комментариев нет:
Отправить комментарий