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

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

Очереди приложений

Существует четыре типа очередей приложений:

Общие и частные очереди

Общие очереди

В пределах домена общие очереди представляют собой очереди, которые опубликованы в доменных службах Active Directory и, следовательно, реплицируются по всему лесу домена. Репликация очередей выполняется только для свойств соответствующих очередей; ни сами очереди, ни их содержимое не реплицируется. Любой компьютер в пределах леса домена потенциально может получить доступ к информации об общих очередях при условии, что пользователь обладает достаточными полномочиями для доступа к соответствующим объектам очереди. В общих словах, любой пользователь леса домена, которому разрешен доступ к службам домена Active Directory и у которого есть разрешение «Отправка сообщений» для какой-либо общей очереди, может выполнять отправку сообщений в эту очередь. Такое разрешение предоставляется по умолчанию при создании очереди. Чтобы прочитать сообщения из общей очереди, необходимо иметь права на просмотр и извлечение сообщений из этой очереди.

В пределах служб домена Active Directory гарантируется, что при создании общих очередей они будут зарегистрированы в службе каталогов, а также будет выполняться резервное копирование регистрационной информации. Общие очереди постоянны и доступны для других приложений.

Частные очереди

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

  • скорость создания очереди;

  • доступ к очереди осуществляется без задержки;

  • отсутствуют дополнительные расходы на репликацию.

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

Чтобы приложение очереди сообщений, выполняющееся на локальном компьютере, имело доступ к частной очереди, необходимо указать только путь к требуемой очереди. Для приложения очереди сообщений, выполняющегося на удаленном компьютере, требуется указать прямое или частное имя для доступа к соответствующей очереди. Для чтения сообщений из очереди удаленное приложение очереди сообщений должно обладать разрешением «Получение сообщений» для соответствующей очереди. По умолчанию отправка сообщений в общие и частные очереди разрешена для любого пользователя.

Транзактные и нетранзактные очереди

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

Отправка сообщений

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

Получение сообщений

Сообщения можно получать из локальной или удаленной очереди.

Подочереди

Они позволяют приложениям группировать сообщения. Подочереди весьма полезны в следующих случаях.

  • Обработка исполняемых заказов. Если приложение обрабатывает сообщения, которые содержат объекты из различных исполняемых заказов, можно использовать подочереди для группировки объектов по каждому заказу для повышения эффективности обработки.

  • Обработка поврежденных сообщений. Если приложение получает сообщение, которое оно не может обработать в данное время, то оно может поместить такое сообщение в подочередь поврежденных сообщений для обработки в другое время.

При открытии какой-либо подочереди выполняется неявное ее создание. Другими словами, когда сообщение перемещается в какую-либо подочередь, то в этот момент создается соответствующая подочередь, если она не существовала ранее. Пустые подочереди и подочереди, с которыми не связаны никакие открытые дескрипторы, удаляются. Приложения не могут отправлять сообщения непосредственно в подочереди. Разрешается только перемещать сообщения в подочередь. Кроме того, разрешается принимать сообщения из подочередей, перемещать сообщения между основной очередью и ее подочередью или между двумя подочередями одной основной очереди. Перемещение между подочередями, которые относятся к разным основным очередям, невозможно.

Например, на следующем рисунке показано, что сообщения могут перемещаться в любом направлении между «Подочередью1» (или «Подочередью2») и очередью сообщений «ОчередьА». Сообщения также могут перемещаться между «Подочередью1» и «Подочередью2». Таким же образом сообщения могут перемещаться в любом направлении между «ОчередьюZ» и ее подочередями, «Подочередью3» и «Подочередью4».

Однако невозможно переместить сообщения между «ОчередьюА» и «Подочередью3» или «Подочередью4» либо между «ОчередьюZ» и «Подочередью1» или «Подочередью2». Таким же образом сообщения невозможно перемещать между подочередями «ОчередиА» («Подочередью1» или «Подочередью2») и подочередями «ОчередиZ» («Подочередью3» или «Подочередью4»).

Подочереди

Подочереди не имеют никаких собственных свойств или состояния. Они используют свойства родительской очереди. Например, подочередь не обладает такими собственными свойствами, как:

  • квота;

  • список управления доступом (ACL);

  • тип транзакции.

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

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

Очереди администрирования

Очереди администрирования представляют собой очереди, созданные приложениями. Они используются для хранения системных отрицательных или положительных подтверждающих сообщений, созданных службой очереди сообщений или приложением-подключателем. Указания на отправку в такую очередь устанавливаются приложениями программно в отправляемых сообщениях. Любая доступная нетранзактная очередь может быть использована как очередь администрирования. Очереди администрирования не содержат административных сообщений, которые сохраняются во внутренних частных очередях.

Системные подтверждающие сообщения, возвращенные в такие очереди, могут говорить о том, что сообщение прибыло в очередь назначения или сообщение было изъято из очереди назначения, либо и то, и другое. Каждое подтверждающее сообщение содержит сведения о том, что вызвало отправку подтверждения и какому сообщению соответствует подтверждение. При запросе подтверждающих сообщений приложение, которое выполняет отправку сообщений, должно указать очередь, использующуюся в качестве очереди администрирования и уровень подтверждения сообщений. Как правило, очередь администрирования располагается на локальном компьютере, поэтому приложение может читать подтверждающие сообщения локально.

Очереди ответов

Как и очереди администрирования, очереди ответов представляют собой очереди, созданные приложениями. Они используются для хранения ответных сообщений, которые, как правило, возвращаются от приложения, прочитывающего сообщения из очереди. Очереди ответов указываются программно в приложении, которое выполняет отправку сообщений. Любая доступная очередь может быть использована как очередь ответов. Ответные сообщения отличаются от административных ответных сообщений, которые хранятся во внутренней частной очереди.

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

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

Очереди отчетов

Очереди отчетов представляют собой очереди, создаваемые приложениями для хранения сообщений с отчетами, которые формируются службой очереди сообщений или приложениями-подключателями при получении запроса на трассировку от приложения, отправляющего сообщения. Сообщение с отчетом содержит данные о маршруте, по которому сообщение было доставлено в место назначения на удаленном компьютере, либо о маршруте, по которому было доставлено тестовое сообщение в тестовую очередь на удаленном компьютере. На компьютере может располагаться только одна очередь отчетов.

Все очереди отчетов должны иметь следующую метку и идентификатор типа очереди:

  • метка: MQReport Queue

  • идентификатор типа очереди:

    {55EE8F32-CCE9-11CF-B108-0020AFD61CE9}
    

Как правило, администратор службы очереди сообщений создает очереди отчетов с помощью оснастки «Active Directory - пользователи и компьютеры». Однако приложение также может создать такие очереди, если при создании очереди ей будет присвоена правильная метка и идентификатор типа. Служба очереди сообщений использует метку и идентификатор типа очереди для обнаружения и открытия соответствующей очереди при отправке сообщений с отчетами.

Системные очереди

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

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

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

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

  • Очереди приложений-подключателей: используются для межплатформенного обмена сообщениями.

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

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