...
Типовой процесс доставки сообщения по протоколу AMQP можно отобразить следующим образом:
Отправитель | == | отправка | ==> | Точка обмена | == | маршрутизация | ==> | Очередь | == | доставка | ==> | Получатель |
(Publisher) | (publish) | (Exchange) | (route) | (Queue) | (consumes) | (Consumer) |
В процессе отправки сообщения отправитель устанавливает для сообщения различные параметры, которые влияют на процесс обработки и доставки сообщения.Ключевыми параметрами, которые используются в CSS-17, являются:
- exchange - точка обмена, которая должна использоваться для маршрутизации сообщения на брокере;
- routing.key - метка маршрутизации, которая используется при маршрутизации;
- reply_to.exchange - точка обмена, которая должна использоваться при отправке ответного сообщения;
- reply_to.routing_key - метка маршрутизации, которая должна использоваться при отправке ответного сообщения;
- time_to_live - время жизни сообщения.
Точка обмена (Exchange).
Протокол AMQP регламентирует несколько типов точек обмена, которые отличаются принципами маршрутизации поступающих в них сообщений.Поддерживаются следующие типа точек обмена:
Direct exchange
Fanout exchange
Topic exchange
Headers exchange
В системе CSS-17 используется Direct Exchange.
В Direct Exchange маршрутизация входящих сообщений осуществляется в очереди на основании значения параметра "routing key" сообщения. Этот тип точки обмена идеален для организации unicast-потоков обмена сообщениями (можно организовать и multicast обмен).Direct Exchange работает следующим образом:
очередь Q связывается с точкой обмена с меткой маршрутизации routing.key=K;
когда новое сообщение поступает с меткой маршрутизации routing.key=R, то точка обмена маршрутизирует это сообщение в очередь Q, если R=K.
Direct exhange часто используется в ситуациях, когда нужно распределять задачи между несколькими однотипными обработчиками в режиме распределения нагрузки (round robin).
Схематически работа Direct exhcnage:
...