|
Механизм взаимодействия процессов на уровне MQ (Message Queue)
|
Введение
В данном документе опубликованы попытки спроектировать и описать механизм межпроцессового
взаимодействия для передачи сообщений в локальной системе и передачи сообщений между
удалёнными системами.
Структура
Структура системы передачи сообщений представлена на рис.
1. (формат OpenOffice
Drawing).
Компоненты:
- SYSn - Система
- APPn - Приложение
- SERVICEn - Сервис
- IPCDispatcher - Диспетчер сообщений
- IPCBridgeManager - Диспетчер мостов
- FIFOIn - FIFO буфер для входящих с точки зрения приложения сообщений
- FIFOOut - FIFO буфер для исходящих с точки зрения приложения сообщений
Алгоритм работы диспетчера магистралей сообщений
Алгоритм показан на рис.
2. (формат OpenOffice
Drawing).
Основные моменты:
- Диспетчер очереди сообщений IPCDispatcher является самостоятельной нитью процесса
IPC, которая постоянно сканирует все магистрали на предмет появления новых сообщений
и занимается их трансляцией в соответствии с политикой безопасности
- Каждое сообщение рассматривается минимум с четырьмя параметрами-адресами:
- системы-отправителя
- потока-отправителя
- системы-получателя
- потока-получателя
- Сообщения от удалённой системы и от локальной системы транслируются по-разному,
но для конечного получателя разницы между ними нет. Это позволяет использовать
единый механизм для работы с разными сообщениями от разных источников - как локальных,
так и удалённых
- В алгоритме реализована простая система подтверждения доставки на уровне локальной
системы
- При обработке сообщений от удалённых систем может возникнуть ситуация, когда
в очереди от удалённой системы может появиться сообщение для другой удалённой
системы. В данном алгоритме эта ситуация исключается путём игнорирования данных
сообщений. В дальнейшем возможность такой трансляции сообщений может быть активирована.
Она будет необходима для MQProxy - Message Queue Proxy - довереный агент для мостового
соединения систем. Этакий прокси/роутер/файервол на уровне сессий межпроцесового
взаимодействия в точке объединения двух сетей
- В случае передачи сообщений из локальной системы в удалённую все сообщения помещаются
в локальную магистраль удалённой системы:
- Мост передаёт эти сообщения в удалённую систему на удалённую магистраль
локальной системы
- На удалённой системе IPCDispatcher, в свою очередь, получает это сообщение
из магистрали и передаёт его потоку-получателю, отсылая в магистраль подтверждение
доставки или сообщение о невозможности доставки
- Подтверждение путешествует через мост и попадает в локальную систему в магистраль
удалённой системы
- Локальный диспетчер доставляет подтверждение потоку-источнику начального
сообщения
Таким образом, и организуется гарантированная доставка сообщений через мост и единство
методов системы подтверждений.