SlideShare a Scribd company logo
1 of 37
Download to read offline
Взаимодействие сервисов через
Advanced Message

Queuing Protocol
Паттерны интеграции
AMQP
2
AMQP (Advanced Message Queuing Protocol) — протокол
обмена сообщениями между компонентами системы.
Основные понятия
3
•Сообщение / Message
•Обменник / Exchange
•Очередь / Queue
•Связка / Binding
•Поставщик / Producer
•Потребитель / Consumer
Пример жизненного цикла сообщения
4
Producer
Exchange
создание
отправка
Consumer
Queue
обработка
получение
Binding
доставка
Сообщение / Message
5
•Единица передаваемой информации

•Состоит из заголовка и тела:
•заголовок содержит служебную информацию (в какой
обменник и с каким ключом отправить, из какой очереди
получить)
•тело содержит непосредственно данные
Поставщик / Producer
6
•Сервис (компонент приложения),
формирующий сообщения для
потребителей
•Во время отправки сообщения
задает обменник и ключ
маршрутизации
Потребитель / Consumer
7
•Сервис (компонент приложения),
обрабатывающий сообщения,
приходящие от поставщиков
•Для получения сообщений
указывает очередь, из которой
хочет получать сообщения
Обменник / Exchange
8
•Место, в которое отправляются 

сообщения от поставщика или 

из других обменников
•Не хранит сообщения
•Бывает трех типов (логика):
•fanout — во все привязанные q/e
•direct — в q/e по совпадению с ключом маршрутизации
•topic — в q/e по маске на ключ маршрутизации
Связка / Binding
9
•Связка задает ключ, по которому

очередь или обменник 

привязываются к обменнику,

из которого будут получать

сообщения
Очередь / Queue
10
•Хранит сообщения до тех пор,

пока их не заберет клиент
Интеграция сервисов
11
•Каналы обмена сообщениями
•Типы сообщений
•Маршрутизация сообщений
•Управление системой
Каналы обмена сообщениями
12
Канал Точка-Точка / Point-to-Point Channel
13
•Имеется один поставщик
•Каждое сообщение будет получено только один раз, даже если
имеется несколько потребителей
•Сообщение получает или один потребитель, или
конкурирующие потребители
Канал Точка-Точка / Point-to-Point Channel
14
Producer Queue
Consumer
Канал Точка-Точка / Point-to-Point Channel
15
Producer Queue
C CC
Канал Публикация-Подписка / 

Publish-Suscribe Channel
16
•Имеется один поставщик — «издатель»
•Поставщик должен оповещать всех подписчиков, например, о
каком-то событии
•Каждое сообщение должны получить все потребители
17
Exchange
Producer Q С
Канал Публикация-Подписка / 

Publish-Suscribe Channel
Q С
СQ
Запрос-Ответ / Request-Reply
18
•Служит для организации двухстороннего обмена сообщениями
— отправитель может получить ответ от получателя
•Отправитель называется «инициатором запроса» (Requestor)
•Получатель называется «ответчиком», т.к. отправляет
сообщение в ответ на пришедшее (Replier)
•Каждое сообщение идет по собственному каналу
19
E
Requestor
Q
Replier
EQ
Запрос-Ответ / Request-Reply
Типы сообщений
20
Сообщение с командой / Command Message
21
•Используется для удаленного вызова команд
•Поставщик указывает в сообщении команду, которую должен
выполнить потребитель
•Для передачи обычно используется канал «Точка-Точка»
Сообщение с документом / Document Message
22
•Используется для передачи данных между сервисами
•Сообщение содержит только данные, потребитель сам должен
решить, что с ними дальше делать
•Данные более значимы, чем своевременность доставки
•Для передачи используются каналы «Точка-Точка» или
«Публикация-Подписка»
Сообщение о событии / Event Message
23
•Используется для оповещения сервисов о том, что в сервисе-
отправителе произошло некоторое событие
•Сообщения могут не содержать данных, в этом случае важен
сам факт отправки сообщения (факт наступления события)
•Для передачи используются каналы «Точка-Точка» или
«Публикация-Подписка»
Маршрутизация
24
Маршрутизация сообщений / Routing
25
•Сообщения, отправляемые поставщиком, необходимо
распределять разным получателям в соответствии с некоторой
логикой
•При отправке сообщений указывается ключ маршрутизации
(routing key), на основе которого обменник понимает, в какую
очередь (или какие очереди) сообщение должно попасть
•Типы маршрутизации: fanout, direct, topic
26
Exchange

direct
Producer Q С
Q С
СQ
rk_1
rk_2
rk_3
Маршрутизация сообщений / Routing
27
Exchange

topic
Producer Q С
Q С
СQ
p1.*
p2.*
p3.*
Маршрутизация сообщений / Topic
p4.*
Управление системой:
мониторинг и отладка
28
Пульс / Heartbit
29
•Каждый компонент системы периодически отправляет
сообщения сервису мониторинга. Сервис мониторинга
понимает, что компонент функционирует.
•Сообщения могут содержать какие-то дополнительные
сведения о компоненте (кол-во обработанных сообщений, кол-
во потребляемой памяти и т. д.)
Тестовые сообщения / 

Test Messages
30
•Сервис мониторинга отправляет некоторому компоненту
тестовые сообщения и проверяет, правильно ли компонент на
них реагирует.
Отвод / Wire Tap
31
•Предположим, что передача сообщений между парой сервисов
производится по каналу «Точка-Точка»
•Во время тестирования, мониторинга или отладки необходимо
отслеживать все сообщения, перемещающиеся по каналу
Отвод / Wire Tap
32
Exchange
Producer
Queue
Consumer
Wire Tap
Журнал доставки сообщений / 

Message History
33
•Сервис мониторинга собирает информацию о сообщениях
•История сообщений помогает понять, как сервисы
взаимодействуют между собой
•Message Store — сохраняем историю сообщений в отдельном
хранилище. По этой истории можно строить аналитику.
Журнал доставки сообщений / 

Message History
E
P
Q
MessageHistory
E
C/P
Q
С
Дополнительные материалы
35
Enterprise Integration Patterns

Шаблоны интеграции корпоративных приложений
http://www.enterpriseintegrationpatterns.com
Дополнительные материалы
36
• Как работает AMQP (симулятор RabbitMQ):

http://tryrabbitmq.com
• Реализация базовых шаблонов интеграции на разных ЯП:

https://www.rabbitmq.com/getstarted.html
info@elena.rumyantseva.name
@webdeva
Контакты

More Related Content

What's hot

МАИ, Сети ЭВМ, Лекция №6
МАИ, Сети ЭВМ, Лекция №6МАИ, Сети ЭВМ, Лекция №6
МАИ, Сети ЭВМ, Лекция №6Dima Dzuba
 
Вячеслав Бирюков - HTTP и HTTPS
Вячеслав Бирюков - HTTP и HTTPSВячеслав Бирюков - HTTP и HTTPS
Вячеслав Бирюков - HTTP и HTTPSYandex
 
МАИ, Сети ЭВМ, Лекция №1
МАИ, Сети ЭВМ, Лекция №1МАИ, Сети ЭВМ, Лекция №1
МАИ, Сети ЭВМ, Лекция №1Dima Dzuba
 
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...Fuenteovejuna
 
МАИ, Сети ЭВМ, Лекция №3
МАИ, Сети ЭВМ, Лекция №3МАИ, Сети ЭВМ, Лекция №3
МАИ, Сети ЭВМ, Лекция №3Dima Dzuba
 
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...Ontico
 
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (..."Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...AvitoTech
 
Производительность программных систем
Производительность программных системПроизводительность программных систем
Производительность программных системDima Dzuba
 
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)Ontico
 
Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...
Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...
Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...Ontico
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Vadim Madison
 
МАИ, Сети ЭВМ, Лекция №2
МАИ, Сети ЭВМ, Лекция №2МАИ, Сети ЭВМ, Лекция №2
МАИ, Сети ЭВМ, Лекция №2Dima Dzuba
 
Что нового в SQL Server 2014
Что нового в SQL Server 2014Что нового в SQL Server 2014
Что нового в SQL Server 2014Andrey Korshikov
 
Распределенная система тестирования машинного перевода
Распределенная система тестирования машинного переводаРаспределенная система тестирования машинного перевода
Распределенная система тестирования машинного переводаyaevents
 
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...Ontico
 
05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколыRoman Brovko
 
лекция №5
лекция №5лекция №5
лекция №5student_kai
 

What's hot (20)

Win server
Win serverWin server
Win server
 
МАИ, Сети ЭВМ, Лекция №6
МАИ, Сети ЭВМ, Лекция №6МАИ, Сети ЭВМ, Лекция №6
МАИ, Сети ЭВМ, Лекция №6
 
Backup commvault data_line
Backup commvault data_lineBackup commvault data_line
Backup commvault data_line
 
Вячеслав Бирюков - HTTP и HTTPS
Вячеслав Бирюков - HTTP и HTTPSВячеслав Бирюков - HTTP и HTTPS
Вячеслав Бирюков - HTTP и HTTPS
 
МАИ, Сети ЭВМ, Лекция №1
МАИ, Сети ЭВМ, Лекция №1МАИ, Сети ЭВМ, Лекция №1
МАИ, Сети ЭВМ, Лекция №1
 
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
 
МАИ, Сети ЭВМ, Лекция №3
МАИ, Сети ЭВМ, Лекция №3МАИ, Сети ЭВМ, Лекция №3
МАИ, Сети ЭВМ, Лекция №3
 
Chain of responsibility
Chain of responsibilityChain of responsibility
Chain of responsibility
 
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
 
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (..."Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
 
Производительность программных систем
Производительность программных системПроизводительность программных систем
Производительность программных систем
 
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)
Как не надо писать приложения, основанные на протоколе TCP (Артём Гавриченков)
 
Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...
Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...
Использование асинхронной очереди сообщений в высоконагруженном проекте / Анд...
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?
 
МАИ, Сети ЭВМ, Лекция №2
МАИ, Сети ЭВМ, Лекция №2МАИ, Сети ЭВМ, Лекция №2
МАИ, Сети ЭВМ, Лекция №2
 
Что нового в SQL Server 2014
Что нового в SQL Server 2014Что нового в SQL Server 2014
Что нового в SQL Server 2014
 
Распределенная система тестирования машинного перевода
Распределенная система тестирования машинного переводаРаспределенная система тестирования машинного перевода
Распределенная система тестирования машинного перевода
 
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...
Пишем свою платформу для управления данными. Это очень просто / Суханов Васил...
 
05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы
 
лекция №5
лекция №5лекция №5
лекция №5
 

Similar to Взаимодействие сервисов через Advanced Message
 Queuing Protocol

семейство протоколов
семейство протоколовсемейство протоколов
семейство протоколовliliya12345
 
ук 03.011.01 2011
ук 03.011.01 2011ук 03.011.01 2011
ук 03.011.01 2011etyumentcev
 
8 создание приложений по технологии windows communications foundation
8 создание приложений по технологии windows communications foundation8 создание приложений по технологии windows communications foundation
8 создание приложений по технологии windows communications foundationKewpaN
 
архитектура и принципы работы типового Web приложения
архитектура и принципы работы типового Web приложенияархитектура и принципы работы типового Web приложения
архитектура и принципы работы типового Web приложенияVladyslav Leikykh
 
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet APIПротокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet APIEkaterina Kuchinskaya
 
63
6363
63JIuc
 
Корпоративная интеграционно-транспортная система (КИТС) СО ЕЭС шлюз во внешни...
Корпоративная интеграционно-транспортная система (КИТС) СО ЕЭС шлюз во внешни...Корпоративная интеграционно-транспортная система (КИТС) СО ЕЭС шлюз во внешни...
Корпоративная интеграционно-транспортная система (КИТС) СО ЕЭС шлюз во внешни...КРОК
 
Data Destribution service OMG standart
Data Destribution service OMG standart Data Destribution service OMG standart
Data Destribution service OMG standart Sergei Seleznev
 
JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.Igor Shkulipa
 
Сети и системы телекоммуникаций. Протокол TCP
Сети и системы телекоммуникаций. Протокол TCPСети и системы телекоммуникаций. Протокол TCP
Сети и системы телекоммуникаций. Протокол TCPAndrey Sozykin
 
Антон Шумихин - Архитектура сетей
Антон Шумихин - Архитектура сетейАнтон Шумихин - Архитектура сетей
Антон Шумихин - Архитектура сетейGAiN@ESD
 
Content provider access 091215
Content provider access 091215Content provider access 091215
Content provider access 091215Svyazcom
 
электронная почта
электронная почтаэлектронная почта
электронная почтаmelek88
 

Similar to Взаимодействие сервисов через Advanced Message
 Queuing Protocol (19)

семейство протоколов
семейство протоколовсемейство протоколов
семейство протоколов
 
ук 03.011.01 2011
ук 03.011.01 2011ук 03.011.01 2011
ук 03.011.01 2011
 
8 создание приложений по технологии windows communications foundation
8 создание приложений по технологии windows communications foundation8 создание приложений по технологии windows communications foundation
8 создание приложений по технологии windows communications foundation
 
архитектура и принципы работы типового Web приложения
архитектура и принципы работы типового Web приложенияархитектура и принципы работы типового Web приложения
архитектура и принципы работы типового Web приложения
 
Routing
RoutingRouting
Routing
 
Modbus TCP.pptx
Modbus TCP.pptxModbus TCP.pptx
Modbus TCP.pptx
 
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet APIПротокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
 
63
6363
63
 
Корпоративная интеграционно-транспортная система (КИТС) СО ЕЭС шлюз во внешни...
Корпоративная интеграционно-транспортная система (КИТС) СО ЕЭС шлюз во внешни...Корпоративная интеграционно-транспортная система (КИТС) СО ЕЭС шлюз во внешни...
Корпоративная интеграционно-транспортная система (КИТС) СО ЕЭС шлюз во внешни...
 
Data Destribution service OMG standart
Data Destribution service OMG standart Data Destribution service OMG standart
Data Destribution service OMG standart
 
JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.
 
Сети и системы телекоммуникаций. Протокол TCP
Сети и системы телекоммуникаций. Протокол TCPСети и системы телекоммуникаций. Протокол TCP
Сети и системы телекоммуникаций. Протокол TCP
 
Антон Шумихин - Архитектура сетей
Антон Шумихин - Архитектура сетейАнтон Шумихин - Архитектура сетей
Антон Шумихин - Архитектура сетей
 
12 -tcp
12  -tcp12  -tcp
12 -tcp
 
Сетевые службы
Сетевые службыСетевые службы
Сетевые службы
 
Content provider access 091215
Content provider access 091215Content provider access 091215
Content provider access 091215
 
Протокол HTTP
Протокол HTTPПротокол HTTP
Протокол HTTP
 
электронная почта
электронная почтаэлектронная почта
электронная почта
 
Telecom-TV
Telecom-TVTelecom-TV
Telecom-TV
 

More from Elena Grahovac

Готовим код 
в мир открытых исходников
Готовим код 
в мир открытых исходниковГотовим код 
в мир открытых исходников
Готовим код 
в мир открытых исходниковElena Grahovac
 
Введение в язык программирования Go
Введение в язык программирования GoВведение в язык программирования Go
Введение в язык программирования GoElena Grahovac
 
Women Techmakers Novosibirsk, первый митап
Women Techmakers Novosibirsk, первый митапWomen Techmakers Novosibirsk, первый митап
Women Techmakers Novosibirsk, первый митапElena Grahovac
 
Пословицы дядюшки Пайка
Пословицы дядюшки ПайкаПословицы дядюшки Пайка
Пословицы дядюшки ПайкаElena Grahovac
 
Пользовательские истории
Пользовательские историиПользовательские истории
Пользовательские историиElena Grahovac
 
Микросервисные архитектуры и немного жизненного опыта
Микросервисные архитектуры и немного жизненного опытаМикросервисные архитектуры и немного жизненного опыта
Микросервисные архитектуры и немного жизненного опытаElena Grahovac
 
Введение в сервис-ориентированную архитектуру
Введение в сервис-ориентированную архитектуруВведение в сервис-ориентированную архитектуру
Введение в сервис-ориентированную архитектуруElena Grahovac
 

More from Elena Grahovac (9)

Готовим код 
в мир открытых исходников
Готовим код 
в мир открытых исходниковГотовим код 
в мир открытых исходников
Готовим код 
в мир открытых исходников
 
Go at Openprovider
Go at OpenproviderGo at Openprovider
Go at Openprovider
 
Введение в язык программирования Go
Введение в язык программирования GoВведение в язык программирования Go
Введение в язык программирования Go
 
Women Techmakers Novosibirsk, первый митап
Women Techmakers Novosibirsk, первый митапWomen Techmakers Novosibirsk, первый митап
Women Techmakers Novosibirsk, первый митап
 
Пословицы дядюшки Пайка
Пословицы дядюшки ПайкаПословицы дядюшки Пайка
Пословицы дядюшки Пайка
 
Пользовательские истории
Пользовательские историиПользовательские истории
Пользовательские истории
 
Про Git
Про GitПро Git
Про Git
 
Микросервисные архитектуры и немного жизненного опыта
Микросервисные архитектуры и немного жизненного опытаМикросервисные архитектуры и немного жизненного опыта
Микросервисные архитектуры и немного жизненного опыта
 
Введение в сервис-ориентированную архитектуру
Введение в сервис-ориентированную архитектуруВведение в сервис-ориентированную архитектуру
Введение в сервис-ориентированную архитектуру
 

Взаимодействие сервисов через Advanced Message
 Queuing Protocol

  • 1. Взаимодействие сервисов через Advanced Message
 Queuing Protocol Паттерны интеграции
  • 2. AMQP 2 AMQP (Advanced Message Queuing Protocol) — протокол обмена сообщениями между компонентами системы.
  • 3. Основные понятия 3 •Сообщение / Message •Обменник / Exchange •Очередь / Queue •Связка / Binding •Поставщик / Producer •Потребитель / Consumer
  • 4. Пример жизненного цикла сообщения 4 Producer Exchange создание отправка Consumer Queue обработка получение Binding доставка
  • 5. Сообщение / Message 5 •Единица передаваемой информации
 •Состоит из заголовка и тела: •заголовок содержит служебную информацию (в какой обменник и с каким ключом отправить, из какой очереди получить) •тело содержит непосредственно данные
  • 6. Поставщик / Producer 6 •Сервис (компонент приложения), формирующий сообщения для потребителей •Во время отправки сообщения задает обменник и ключ маршрутизации
  • 7. Потребитель / Consumer 7 •Сервис (компонент приложения), обрабатывающий сообщения, приходящие от поставщиков •Для получения сообщений указывает очередь, из которой хочет получать сообщения
  • 8. Обменник / Exchange 8 •Место, в которое отправляются 
 сообщения от поставщика или 
 из других обменников •Не хранит сообщения •Бывает трех типов (логика): •fanout — во все привязанные q/e •direct — в q/e по совпадению с ключом маршрутизации •topic — в q/e по маске на ключ маршрутизации
  • 9. Связка / Binding 9 •Связка задает ключ, по которому
 очередь или обменник 
 привязываются к обменнику,
 из которого будут получать
 сообщения
  • 10. Очередь / Queue 10 •Хранит сообщения до тех пор,
 пока их не заберет клиент
  • 11. Интеграция сервисов 11 •Каналы обмена сообщениями •Типы сообщений •Маршрутизация сообщений •Управление системой
  • 13. Канал Точка-Точка / Point-to-Point Channel 13 •Имеется один поставщик •Каждое сообщение будет получено только один раз, даже если имеется несколько потребителей •Сообщение получает или один потребитель, или конкурирующие потребители
  • 14. Канал Точка-Точка / Point-to-Point Channel 14 Producer Queue Consumer
  • 15. Канал Точка-Точка / Point-to-Point Channel 15 Producer Queue C CC
  • 16. Канал Публикация-Подписка / 
 Publish-Suscribe Channel 16 •Имеется один поставщик — «издатель» •Поставщик должен оповещать всех подписчиков, например, о каком-то событии •Каждое сообщение должны получить все потребители
  • 17. 17 Exchange Producer Q С Канал Публикация-Подписка / 
 Publish-Suscribe Channel Q С СQ
  • 18. Запрос-Ответ / Request-Reply 18 •Служит для организации двухстороннего обмена сообщениями — отправитель может получить ответ от получателя •Отправитель называется «инициатором запроса» (Requestor) •Получатель называется «ответчиком», т.к. отправляет сообщение в ответ на пришедшее (Replier) •Каждое сообщение идет по собственному каналу
  • 21. Сообщение с командой / Command Message 21 •Используется для удаленного вызова команд •Поставщик указывает в сообщении команду, которую должен выполнить потребитель •Для передачи обычно используется канал «Точка-Точка»
  • 22. Сообщение с документом / Document Message 22 •Используется для передачи данных между сервисами •Сообщение содержит только данные, потребитель сам должен решить, что с ними дальше делать •Данные более значимы, чем своевременность доставки •Для передачи используются каналы «Точка-Точка» или «Публикация-Подписка»
  • 23. Сообщение о событии / Event Message 23 •Используется для оповещения сервисов о том, что в сервисе- отправителе произошло некоторое событие •Сообщения могут не содержать данных, в этом случае важен сам факт отправки сообщения (факт наступления события) •Для передачи используются каналы «Точка-Точка» или «Публикация-Подписка»
  • 25. Маршрутизация сообщений / Routing 25 •Сообщения, отправляемые поставщиком, необходимо распределять разным получателям в соответствии с некоторой логикой •При отправке сообщений указывается ключ маршрутизации (routing key), на основе которого обменник понимает, в какую очередь (или какие очереди) сообщение должно попасть •Типы маршрутизации: fanout, direct, topic
  • 26. 26 Exchange
 direct Producer Q С Q С СQ rk_1 rk_2 rk_3 Маршрутизация сообщений / Routing
  • 27. 27 Exchange
 topic Producer Q С Q С СQ p1.* p2.* p3.* Маршрутизация сообщений / Topic p4.*
  • 29. Пульс / Heartbit 29 •Каждый компонент системы периодически отправляет сообщения сервису мониторинга. Сервис мониторинга понимает, что компонент функционирует. •Сообщения могут содержать какие-то дополнительные сведения о компоненте (кол-во обработанных сообщений, кол- во потребляемой памяти и т. д.)
  • 30. Тестовые сообщения / 
 Test Messages 30 •Сервис мониторинга отправляет некоторому компоненту тестовые сообщения и проверяет, правильно ли компонент на них реагирует.
  • 31. Отвод / Wire Tap 31 •Предположим, что передача сообщений между парой сервисов производится по каналу «Точка-Точка» •Во время тестирования, мониторинга или отладки необходимо отслеживать все сообщения, перемещающиеся по каналу
  • 32. Отвод / Wire Tap 32 Exchange Producer Queue Consumer Wire Tap
  • 33. Журнал доставки сообщений / 
 Message History 33 •Сервис мониторинга собирает информацию о сообщениях •История сообщений помогает понять, как сервисы взаимодействуют между собой •Message Store — сохраняем историю сообщений в отдельном хранилище. По этой истории можно строить аналитику.
  • 34. Журнал доставки сообщений / 
 Message History E P Q MessageHistory E C/P Q С
  • 35. Дополнительные материалы 35 Enterprise Integration Patterns
 Шаблоны интеграции корпоративных приложений http://www.enterpriseintegrationpatterns.com
  • 36. Дополнительные материалы 36 • Как работает AMQP (симулятор RabbitMQ):
 http://tryrabbitmq.com • Реализация базовых шаблонов интеграции на разных ЯП:
 https://www.rabbitmq.com/getstarted.html