Разработка распределенных приложений в Microsoft.NET Framework

         

Служба обмена сообщениями MSMQ


В настоящий момент существует несколько основных разработок в области промежуточного программного обеспечения для работы с очередями сообщений. Наиболее известными разработками являются такие системы очередей сообщений, как MSMQ, Sun Java System Message Queue, IBM MQSeries, Oracle Advanced Queing. Промежуточная среда MSMQ – разработка Microsoft для асинхронной передачи сообщений внутри локальной сети, впервые появившаяся в составе операционной системы Windows NT. В настоящее время последней является версия MSMQ 3.0, включенная в Windows XP PE и 2003 Server, достаточно актуальна так же версия 2.0, включенная в состав операционной системы Windows 2000.

Служба MSMQ позволяет произвольному набору приложений добавлять сообщения в некоторую очередь, и произвольному же набору – читать сообщения из очереди. Приложению, использующему MSMQ, доступны следующие основные операции:

  • добавить сообщение в очередь;
  • извлечь первое сообщение из очереди;
  • установить обработчик, вызываемый при появлении сообщения.

Структура сообщения определяется приложением, и может быть произвольной, с ограничением на размер одного сообщения (2Мб для MSMQ 2.0). Далее будет рассмотрено использование MSMQ 2.0/3.0 при разработке приложений с использованием .NET Framework.

При отправке сообщения с использованием MSMQ посылающему приложению необходимо указать имя компьютера и очереди, в которую его необходимо доставить. После вызова приложением функции отправки сообщение сохраняется в локальной исходящей очереди. Затем MSMQ определяет имя компьютера и очереди, куда необходимо передать сообщение. Возможны следующие случаи:

  • сообщение доставляется сразу в указанную отправителем очередь (прямая доставка);
  • сообщение посылается в некоторую промежуточную очередь, определяемую маршрутизатором службы сообщений;
  • MSMQ определяет, что сообщение требуется разослать в несколько очередей (возможность поддерживается начиная с MSMQ 3.0).


Рис. 5.1.  Пересылка сообщения в промежуточной среде MSMQ

После определения имени компьютера с очередью назначения, MSMQ проверяет доступность компьютера (пакетом UDP) и в случае ответа сразу пытается отправить ему сообщение, повторяя попытки с интервалом по умолчанию 5 секунд.
Если сообщение не удается отправить, то обычно каждые 5 минут служба сообщений пытается найти новый пункт назначения сообщения, используя маршрутизацию MSMQ. Процесс пересылки сообщения между компьютерами повторяется, пока оно не достигнет очереди назначения. С момента поступления сообщения в указанную при отправке очередь любое использующее MSMQ приложение с необходимыми правами доступа может прочитать это сообщение (рис. 5.1).

Таким образом, MSMQ поддерживает асинхронную передачу сообщений, при которой участвующие в обмене компоненты распределенной системы не обязательно должны функционировать в один и тот же момент времени.

Благодаря службе маршрутизации сообщений возможно создание моста между MSMQ и аналогичной технологией IBM – IBM Websphere MQ (ранее MQSeries). Websphere MQ может использоваться и напрямую программами .NET Framework, однако обычно это менее удобно, чем использование MSMQ, и может быть связано с дополнительными затратами – служба MSMQ уже входит в большинство систем семейства Windows. Использование моста MSMQ-MQSeries позволяет создавать гетерогенные распределенные системы на основе обмена сообщениями, поскольку технология IBM MQ является изначально межплатформенной.

Приложение может вести поиск нужной ему очереди по ряду критериев. Это возможно при использовании механизма общих очередей в Microsoft Message Queuing, что требует развертывания Microsoft Active Directory.


Содержание раздела