Windows message queue server

Installing Message Queuing (MSMQ)

The following procedures show how to install Message Queuing 4.0 and Message Queuing 3.0.

Message Queuing 4.0 is not available in Windows XP and Windows Server 2003.

To install Message Queuing 4.0 on Windows Server 2008 or Windows Server 2008 R2

In Server Manager, click Features.

In the right-hand pane under Features Summary, click Add Features.

In the resulting window, expand Message Queuing.

Expand Message Queuing Services.

Click Directory Services Integration (for computers joined to a Domain), then click HTTP Support.

Click Next,then click Install.

To install Message Queuing 4.0 on Windows 7 or Windows Vista

Open Control Panel.

Click Programs and then, under Programs and Features, click Turn Windows Features on and off.

Expand Microsoft Message Queue (MSMQ) Server, expand Microsoft Message Queue (MSMQ) Server Core, and then select the check boxes for the following Message Queuing features to install:

MSMQ Active Directory Domain Services Integration (for computers joined to a Domain).

MSMQ HTTP Support.

Click OK.

If you are prompted to restart the computer, click OK to complete the installation.

To install Message Queuing 3.0 on Windows XP and Windows Server 2003

Open Control Panel.

Click Add Remove Programs and then click Add Windows Components.

Select Message Queuing and click Details.

If you are running Windows Server 2003, select Application Server to access Message Queuing.

Ensure that the option MSMQ HTTP Support is selected on the details page.

Click OK to exit the details page, and then click Next. Complete the installation.

If you are prompted to restart the computer, click OK to complete the installation.

Microsoft Message Queuing (MSMQ) – промежуточная среда обмена сообщениями

5.1. Служба обмена сообщениями 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).
Читайте также:  После смены видеокарты не запускается windows

После определения имени компьютера с очередью назначения, 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 .

5.2. Инфраструктура, необходимая для использования MSMQ

Служба MSMQ может работать как в составе домена Active Directory , так и при отсутствии такого домена, но во втором случае невозможно использовать ряд возможностей MSMQ, а именно:

  • не поддерживается шифрование передаваемых сообщений;
  • не поддерживаются общие очереди и механизмы их обнаружения;
  • не поддерживается маршрутизация сообщений и групповая рассылка сообщений.

В MSMQ существуют два вида очередей – общие ( public ) и частные ( private ). Как частные, так и общие очереди могут либо использовать, либо не использовать транзакции, что задается при создании очереди и не может быть изменено в дальнейшем.

Информация об общих очередях публикуется в службе каталогов Active Directory . Путь к общей очереди имеет вид ComputerName\QueueName, возможна также запись пути в виде .\QueueName для очереди на локальном компьютере. Посылающее сообщение приложение может искать доступные в домене общие очереди по заданным критериям. Возможна также проверка приложением наличия общей очереди на удаленном компьютере и ее создание. Для использования общих очередей требуется развертывание MSMQ в рамках домена Active Directory .

Частные очереди доступны как при наличии домена, так и при его отсутствии. Путь к такой очереди имеет вид ComputerName\Private$\QueueName или .\Private$\QueueName для локального компьютера. Приложение , не имеет возможности ни создать, ни проверить наличие частной очереди на удаленном компьютере при использовании средств библиотеки FCL .

В MSMQ 3.0 появилась возможность посылать сообщения в общую или частную очередь по протоколу HTTP при наличии на удаленном компьютере службы Internet Information Services ( IIS ). В этом случае используется путь к очереди вида http://domain.name/msmq/private$/queuename. Посылающий сообщения компьютер так же должен поддерживать HTTP для MSMQ, иначе он не сможет получать какие-либо ответы. При чтении сообщений использовать HTTP -формат имени очереди невозможно.

Читайте также:  Что такое кэш загрузки windows

MSMQ поддерживает два вида имени очереди – прямой вид ( direct name ) и путь к очереди ( path name ). При использовании частных очередей на удаленном компьютере обычно необходимо использовать прямой путь к очереди. При использовании MSMQ программами на . NET Framework прямой путь записывается следующим образом:

  • Formatname:DIRECT=OS:server01\QueueName – прямое имя общей очереди на компьютере server01;
  • Formatname:DIRECT=OS:ws02\Private$\QueueName – прямое имя частной очереди на компьютере ws02;
  • Formatname:DIRECT=TCP:192.168.30.1\private$\QueueName – прямое имя частной очереди на компьютере с адресом 192.168.30.1.

Полноценная работа с очередями возможна только в пределах локальной или виртуально частной сети, поскольку при чтении сообщений используется Windows RPC (в частности, обращения на 135-й порт ). Кроме этого, среда MSMQ не способна функционировать при использовании NAT , за исключением случая HTTP -имени очереди.

Очередь сообщений (Message Queue)

Очередь сообщений (Message Queue)

Этот пост рассказывает об очередях сообщений — почему вы должны знать о них, думать при планировании архитектуры и использовать их в вашем приложении.

Почему очереди сообщений?

Сообщения, наряду с блоками вычисления и хранения, составляют три основных блока почти в каждой блок-схеме системы. Очереди сообщений, по существу, являются связующим звеном между различными процессами в ваших приложениях и обеспечивают надежный и масштабируемый интерфейс взаимодействия с другими подключенными системами и устройствами.
О́чередь — структура данных с дисциплиной доступа к элементам «первый пришёл — первый вышел». Добавление элемента возможно лишь в конец очереди, выборка — только из начала очереди, при этом выбранный элемент из очереди удаляется.

Использование очереди сообщений

Десять причин, почему очереди сообщений являются жизненно важным компонентом для любой архитектуры или приложения:

  • Слабое связывание — очереди сообщений создают неявные интерфейсы обмена данными, которые позволяют процессам быть независимыми друг от друга т.е вы просто определяете формат сообщений отправляемых от одного процесса другому.
  • Избыточность — Очереди позволяют избежать случаев неэкономного использования ресурсов процесса(например памяти) в результате хранения необработанной (лишней) информации.
  • Масштабируемость — очереди сообщений позволяют распределить процессы обработки информации. Таким образом, они позволяют легко наращивать скорость, с которой сообщения добавляются в очередь и обрабатываются.
  • Эластичность и возможность выдерживать пиковые нагрузки — очереди сообщений могут выполнять роль своего рода буфера для накопления данных в случае пиковой нагрузки, смягчая тем самым нагрузку на систему обработки информации и не допуская ее отказа.
  • Отказоустойчивость — очереди сообщений позволяют отделить процессы друг от друга, так что если процесс, который обрабатывает сообщения из очереди падает, то сообщения могут быть добавлены в очередь на обработку позднее, когда система восстановится.
  • Гарантированная доставка — использование очереди сообщений гарантирует, что сообщение будет доставлено и обработано в любом случае (пока есть хотя бы один обработчик).
  • Гарантированный порядок доставки — большая часть систем очередей сообщений способны обеспечить гарантии того, что данные будут обрабатываться в определённом порядке (чаще всего в том порядке в котором они поступили).
  • Буферизация — очереди сообщений позволяет отправлять и получать сообщения при этом работая с максимальной эффективностью, предлагая буферный слой — процесс записи в очередь может происходить настолько быстро, насколько быстро это в состоянии выполнить очередь сообщений, а не обработчик сообщения.
  • Понимание потоков данных — очереди сообщений позволяют выявлять узкие места в потоках данных приложения, легко можно определить какая из очередей забивается, какая простаивает и определить что необходимо делать — добавлять новых обработчиков сообщений или оптимизировать текущую архитектуру.
  • Асинхронная связь — очереди сообщений предоставляют возможность асинхронной обработки данных, которая позволяет поместить сообщение в очередь без обработки, позволяя системе обработать сообщение позднее, когда появится возможность.
Читайте также:  Windows 10 wddm support

Я могу рассказать ещё больше на тему практических рекомендаций — как и для чего люди используют очереди сообщений, но, пожалуй, в следующий раз.
В целом области применения очередей сообщений включают в себя:

  • Обработку данных
  • Буферизацию потоков данных
  • Управление процессами
  • Интеграцию и взаимодействие систем

Вышеприведённые области должны дать вам идеи где можно использовать очереди сообщений. Если они не являются стандартной частью вашего инструментария, вы, вероятно, пропустили то, что может уменьшить сложность вашей системы и решить кучу проблем.

Почему SaaS?

Добавление очереди сообщений для облачных приложений имеет смысл, только если есть чистый выигрыш в плане установки и эксплуатации. Добавление дополнительного архитектурного слоя отвечающего за очереди сообщений — непростая задача, особенно если вы решили использовать собственное решение или установить на свои сервера стороннее, так как это привнесёт дополнительные затраты на мониторинг, настройку, управление и повлияет на общую надёжность и безопасность системы.

Когда очереди сообщений легки в установке, просты в использовании, высоко доступны и чрезвычайно надёжны — все становиться гораздо проще.
Тут уместна аналогия получения энергии. Прогресс шёл от ветряных мельниц и угольных печей до промышленных электростанций и линий электропередач.Этот последний шаг — индустриализация энергии — изменило лик промышленности в мире. Это снизило затраты на строительство и производство, изменило города, заводы, и дома, и позволило создать новые изобретения, услуги и виды бизнеса.

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

Преимущества перехода на облачные очереди сообщений включают в себя:
  • Увеличение скорости выхода на рынок: приложения и системы могут быть построены гораздо быстрее.
  • Уменьшение сложности: снижение рисков и накладных расходов в стратегическом потенциале. Например вам сейчас кажется что свой собственный сервер с поднятым и сконфигурированным RabbitMQ кажется лучшим решением, то в долгосрочной перспективе при росте нагрузки, требованиях к HA(high availability) ранняя интеграция сторонних сервисов может сыграть свою положительную роль.
  • Увеличение масштабируемости: возможность легко масштабировать производительность и функциональность
С чего начать?

Различных сервисов предоставляющих услуги очередей сообщений не так много:

  • Amazon SQS
  • IronMQ
  • StormMQ
  • Windows Azure Queues

При этом SQS предоставляет 100 000 бесплатных сообщений (я так понял что за весь период использования), IronMQ — 10 000 000 бесплатных сообщений в месяц (при условии если вы введете данные кредитной карточки), а StormMQ на данный момент в закрытой бете. Вплане наличия примеров использования и библиотек в лидерах SQS, хотя IronMQ тоже поддерживает наиболее популярные языки (Ruby,Python,C#,Java. ) и примеров использования уже достаточно.

PS Я надеюсь мне удалось заронить каплю сомнения в выбор «поставить свой сервер MQ или использовать сторонний сервис» и заинтересовать в существующих SaaS решениях в области очередей сообщений.

upd: добавил Windows Azure Queues

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Оцените статью