- Message Queuing (MSMQ)
- More information
- Обзор Message Queuing
- Когда следует использовать Message Queuing
- Функциональные возможности Message Queuing
- Продукты Message Queuing
- Установка системы очередей сообщений (MSMQ) Installing Message Queuing (MSMQ)
- Установка Message Queuing 4.0 в Windows Server 2008 или Windows Server 2008 R2 To install Message Queuing 4.0 on Windows Server 2008 or Windows Server 2008 R2
- Установка очереди сообщений 4.0 в Windows 7 или Windows Vista To install Message Queuing 4.0 on Windows 7 or Windows Vista
- Установка Message Queuing 3.0 в Windows XP или Windows Server 2003 To install Message Queuing 3.0 on Windows XP and Windows Server 2003
Message Queuing (MSMQ)
Applies To: Windows 10, Windows 7, Windows 8, Windows 8.1, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows Server 2012 R2, Windows Server Technical Preview, Windows Vista
Purpose
Message Queuing (MSMQ) technology enables applications running at different times to communicate across heterogeneous networks and systems that may be temporarily offline. Applications send messages to queues and read messages from queues. The following illustration shows how a queue can hold messages that are generated by multiple sending applications and read by multiple receiving applications.
» title=» » data-linktype=»relative-path»/>
Where Applicable
Message Queuing provides guaranteed message delivery, efficient routing, security, and priority-based messaging.
It can be used to implement solutions to both asynchronous and synchronous scenarios requiring high performance. The following list shows several places where Message Queuing can be used.
Mission-critical financial services: for example, electronic commerce.
Embedded and hand-held applications: for example, underlying communications to and from embedded devices that route baggage through airports by means of an automatic baggage system.
Outside sales: for example, sales automation applications for traveling sales representatives.
Workflow: Message Queuing makes it easy to create a workflow that updates each system. A typical design pattern is to implement an agent to interact with each system. Using a workflow-agent architecture also minimizes the impact of changes in one system on the other systems. With Message Queuing, the loose coupling between systems makes upgrading individual systems simpler.
Developer Audience
Message Queuing applications can be developed using C++ APIs or COM objects. Applications can be built in any of the popular development environments: for example, MicrosoftВ® Visual BasicВ®, Visual BasicВ® Scripting Edition, Visual C++В®, Visual StudioВ® .NET, Borland Delphi, and Powersoft Powerbuilder. This allows applications to be developed for the Internet as well, including both server-side (Internet Information Server) and client-side (Internet Explorer) applications. The .NET Framework offers a set of managed Message Queuing objects.
Run-Time Requirements
MSMQ 3.0 can be deployed on computers running Microsoft Windows and members of the Windows Server family.
MSMQ is also available with independent client functionality on computers running Windows CE 3.0.
Interoperability
More information
For information on the following:
New features for each version of Message Queuing. See What’s New in Message Queuing.
Sources of information on installation and administration and books on Message Queuing. See More Information on Message Queuing.
Message Queuing concepts and services. See About Message Queuing.
Examples using API functions and COM components. See Using Message Queuing.
Message Queuing functions, properties, structures, and COM components. See Message Queuing Reference.
Technical terms used in the Message Queuing documentation. See Message Queuing Glossary.
Supplementary information not covered in the body of the Message Queuing documentation. See Message Queuing Appendix.
Обзор Message Queuing
В пространстве имен System.Messaging определены классы, которые позволяют выполнять чтение и запись сообщений с использованием такого предлагаемого в составе операционной системы Windows средства для организации сообщений, как .
Обмен сообщениями может применяться в сценарии автономной работы, в котором не требуется, чтобы клиент и сервер обязательно запускались в одно и то же время.
Прежде чем углубляться в детали программирования с использованием Message Queuing, в данной статье я предлагаю ознакомиться с основными концепциями организации очередей сообщений и сравнить их с концепциями синхронного и асинхронного программирования.
При синхронном программировании, когда вызывается метод, то вызвавший его код должен ожидать, пока метод не завершит свою работу. При асинхронном программировании вызывающий поток запускает метод и параллельно продолжает свою работу. Асинхронное программирование основано на применении делегатов, библиотек классов, которые уже поддерживают асинхронные методы (например, прокси-классы веб-служб и классы из пространств System.Net и System.IO), либо специальных потоков. Как при синхронном, так и при асинхронном программировании клиент и сервер должны работать в одно и то же время.
Хотя Message Queuing работает асинхронно, поскольку клиент (отправитель) не ожидает прочтения получателем (сервером) оправленных ему данных, между Message Queuing и асинхронным программированием существует принципиальная разница: Message Queuing может выполняться в автономной (отключенной) среде. На момент отправки данных их получатель может быть отключен. Позднее, когда получатель подключится, он получит данные без вмешательства отправляющего приложения.
Подключенное и отключенное программирование можно сравнить с разговором по телефону и отправкой почтовых сообщений. При разговоре с кем-либо по телефону оба участника должны быть подключены одновременно — это синхронная коммуникация. В случае обмена электронной почтой отправитель не знает, когда его послание будет прочитано. Люди, использующие эту технологию, работают в автономном (отключенном) режиме.
Конечно, может случиться так, что почта не будет прочитана никогда, а просто проигнорирована. Такова природа отключенных коммуникаций. Чтобы избежать этой проблемы, можно запросить ответ или подтверждение факта прочтения письма. Если ответ не придет в течение определенного времени, возможно, придется как-то справляться с таким «исключением». Все это также возможно в Message Queuing.
Message Queuing, по сути, можно считать технологией для обмена электронными сообщениями между приложениями, а не людьми. Она обладает множеством функциональных возможностей, которые в других службах обмена сообщениями не доступны: гарантированием доставки, применением транзакций, получением подтверждений, экспресс-режимом, использующим память, и т.д. Message Queuing предлагает массу полезных средств для коммуникаций между приложениями.
С помощью Message Queuing можно отправлять, принимать и маршрутизировать сообщения в подключенной и отключенной (автономной) среде. На рисунке ниже показан очень простой способ использования сообщений. Отправитель посылает сообщения в очередь сообщений, а получатель принимает их из этой очереди:
Когда следует использовать Message Queuing
Одной из ситуаций, в которых удобно применять Message Queuing — это когда клиентское приложение часто отключается от сети (например, у коммивояжера, навещающего заказчиков на местах). Коммивояжер может вводить данные заказа непосредственно у заказчика. Приложение ставит сообщение о каждом заказе в очередь сообщений, находящуюся на клиентской системе. Как только коммивояжер возвращается в свой офис, заказ автоматически передается из очереди сообщений клиентской системы в очередь сообщений целевой системы, где и обрабатывается.
Помимо портативного компьютера, коммивояжер может использовать устройство Pocket Windows, где также доступно Message Queuing.
Технология Message Queuing может быть полезна и в подключенной среде. Представьте сайт электронной коммерции (показан на рисунке ниже), где в определенные периоды времени сервер полностью загружен обработкой заказов, например, в ранний вечер и в выходные, при этом по ночам нагрузка значительно уменьшается. Решение проблемы может состоять в приобретении более быстрого сервера или в добавлении дополнительных серверов к системе, чтобы они справлялись с пиковыми нагрузками.
Однако существует более дешевое решение: сгладить пиковые нагрузки, сдвинув транзакции со времени максимальных нагрузок на время с низкой загрузкой. В такой схеме заказы отправляются в очередь сообщений, а принимающая сторона читает их тогда, когда это удобно системе базы данных. Таким образом, нагрузка на систему сглаживается по времени, так что сервер, обрабатывающий транзакции, может быть дешевле и не требовать модернизации:
Функциональные возможности Message Queuing
Технология Message Queuing является службой, которая поставляется как часть операционной системы Windows. Ниже перечислены ее основные функциональные возможности:
Сообщения могут пересылаться в автономной среде. То есть приложению-отправителю и приложению-получателю вовсе не обязательно выполняться в одно и то же время.
В экспресс-режиме сообщения могут пересылаться очень быстро. В экспресс-режиме сообщения просто сохраняются в памяти.
Для механизма восстановления сообщения могут отправляться с гарантированной доставкой. Такие сообщения сохраняются в файлах и доставляются даже в случае перезагрузки сервера.
Очереди сообщений могут защищаться с применением списков контроля доступа и указания в них, каким пользователям разрешено отправлять или получать сообщения из очереди. Кроме того, сообщения могут шифроваться для исключения вероятности их прочтения с помощью сетевых анализаторов пакетов, а также снабжаться приоритетами, чтобы те из них, которые имеют более высокий приоритет, обрабатывались быстрее.
В Message Queuing 3.0 поддерживается возможность отправки многоадресных (multicast) сообщений.
В Message Queuing 4.0 поддерживается возможность распознавания вредоносных сообщений. Для таких сообщений может быть определена специальная очередь.
Например, в случае, если после прочтения сообщения из обычной очереди, далее оно должно вставляться в базу данных, но по какой-то причине этого не происходит, это сообщение может быть отправлено в очередь вредоносных сообщений. Впоследствии этой очередью вредоносных сообщений должен кто-нибудь заняться и выяснить, по какой причине адрес сообщения не удалось преобразовать.
В Message Queuing 5.0 поддерживаются более безопасные алгоритмы аутентификации, и может обрабатываться большее количество очередей. (В Message Queuing 4.0 при обработке нескольких тысяч очередей начинали возникать проблемы с производительностью.)
Из-за того, что Message Queuing является частью операционной системы, установить версию Message Queuing 5.0 в системе Windows XP или Windows Server 2003 не получится. Эта версия входит в состав ОС Windows Server 2008 R2 и Windows 7.
Продукты Message Queuing
Версия Message Queuing 5.0 поставляется в составе Windows 7 и Windows Server 2008 R2. В Windows 2000 входила версия Message Queuing 2.0, в которой не было поддержки ни протокола HTTP, ни многоадресных сообщений. Версия Message Queuing 3.0 поставлялась в составе Windows XP и Windows Server 2003, а версия Message Queuing 4.0 — в составе Windows Vista и Windows Server 2003.
При использовании ссылки Turn Windows Features on or off (Включение или отключение компонентов Windows), которая предлагается в Windows 7 в окне Configuring Programs and Features (Программы и компоненты), можно обнаружить отдельный раздел с опциями, касающимися Message Queuing:
В этом разделе доступны для выбора перечисленные ниже компоненты:
Microsoft Message Queue (MSMQ) Server Core
Основные компоненты сервера очереди сообщений (MSMQ), которые необходимы для получения базовой функциональности Message Queuing.
Active Directory Domain Services Integration
Интеграция MSMQ доменных служб Active Directory. Это средство позволяет записывать имена очередей сообщений в Active Directory. С помощью этой опции можно находить очереди в Active Directory и защищать их на основе пользователей и групп пользователей Windows.
MSMQ HTTP Support
Поддержка протокола HTTP MSMQ. Поддержка MSMQ HTTP позволяет отправлять и принимать сообщения, используя протокол HTTP.
Triggers
С помощью триггеров создаются экземпляры приложений при поступлении нового сообщения.
Multicast Support
Поддержка многоадресной рассылки. Позволяет отправлять сообщения группам серверов.
MSMQ DCOM Proxy
С помощью DCOM-прокси система может подключаться к удаленному серверу, используя API-интерфейс DCOM.
После установки Message Queuing в системе должна быть обязательно запущена служба Message Queuing (показана на рисунке). Эта служба читает и записывает сообщения, а также взаимодействует с другими серверами Message Queuing для осуществления маршрутизации сообщений по сети:
Установка системы очередей сообщений (MSMQ) Installing Message Queuing (MSMQ)
В процедурах ниже показана методика установки очереди сообщений 4.0 и очереди сообщений 3.0. The following procedures show how to install Message Queuing 4.0 and Message Queuing 3.0.
Служба очереди сообщений 4,0 недоступна в Windows XP и Windows Server 2003. Message Queuing 4.0 is not available in Windows XP and Windows Server 2003.
Установка Message Queuing 4.0 в Windows Server 2008 или Windows Server 2008 R2 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.
Щелкните Интеграция служб каталогов (для компьютеров, присоединенных к домену), а затем щелкните Поддержка HTTP. Click Directory Services Integration (for computers joined to a Domain), then click HTTP Support.
Нажмите кнопку Далее, а затем — установить. Click Next,then click Install.
Установка очереди сообщений 4.0 в Windows 7 или Windows Vista To install Message Queuing 4.0 on Windows 7 or Windows Vista
Откройте Панель управления. Open Control Panel.
Щелкните программы , а затем в разделе программы и компоненты щелкните Включение и отключение компонентов Windows. Click Programs and then, under Programs and Features, click Turn Windows Features on and off.
Разверните сервер очереди сообщений Microsoft (MSMQ), разверните ядро сервера очереди сообщений Microsoft (MSMQ) и затем отметьте флажками установку следующих возможностей очереди сообщений: 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 (для компьютеров, подключенных к домену). MSMQ Active Directory Domain Services Integration (for computers joined to a Domain).
Поддержка MSMQ HTTP. MSMQ HTTP Support.
Нажмите кнопку ОК. Click OK.
Если появится запрос на перезагрузку компьютера, нажмите кнопку ОК , чтобы завершить установку. If you are prompted to restart the computer, click OK to complete the installation.
Установка Message Queuing 3.0 в Windows XP или Windows Server 2003 To install Message Queuing 3.0 on Windows XP and Windows Server 2003
Откройте Панель управления. Open Control Panel.
Щелкните Добавить удалить программы , а затем — Добавить компоненты Windows. Click Add Remove Programs and then click Add Windows Components.
Выберите очередь сообщений и щелкните сведения. Select Message Queuing and click Details.
Если вы используете Windows Server 2003, выберите сервер приложений для доступа к очереди сообщений. If you are running Windows Server 2003, select Application Server to access Message Queuing.
Удостоверьтесь, что на странице сведений выбрана функция поддержки MSMQ HTTP. 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.