Поделиться через


Рекомендации по созданию ссылок на очередь

Обновлен: Ноябрь 2007

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

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

  • Указать имя формата — уникальный идентификатор для очереди, созданной MSMQ, когда очередь создается или генерируется приложением впоследствии.

  • Указать метку — описательное и потенциально неуникальное имя для очереди, которое присваивается администратором очереди при ее создании.

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

Использование пути для обращения к очереди

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

Тип очереди

Используемый в пути синтаксис

Общая очередь

Имя_компьютера\Имя_очереди

Частная очередь

Имя_Компьютера\Private$\Имя_очереди

Очередь журнала

Имя_компьютера\Имя_очереди\Journal$

Очередь журнала компьютера

Имя_компьютера\Journal$

Архивная очередь компьютера

Имя_компьютера\Deadletter$

Транзакционная архивная очередь компьютера

Имя_компьютера\XactDeadletter$

В качестве имени локального компьютера можно использовать ".", чтобы "YourMachine\MyQueue" соответствовало ".\MyQueue".

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

  • Когда контроллер домена на сервере очередей сообщений получает операцию для очереди, указанной в виде пути, он должен обработать путь и определить имя формата данной очереди. В результате этого, обработка может занять немного больше времени, чем в случае прямого обращения к очереди по имени формата.

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

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

Путь к очереди можно извлечь, запросив и объединив результаты возврата двух отдельных свойств в базовом классе MessageQueue — свойства MachineName и свойства QueueName.

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

MessageQueue1.Path = "YourMachine\MyQueue"
     MessageQueue1.Path = @"YourMachine\MyQueue";
ktb2ecsw.alert_note(ru-ru,VS.90).gifПримечание.

Вместо синтаксиса @".\MyQueue" для языка C# можно использовать эквивалентное ".\\MyQueue". Знак @ обозначает литеральную строку. Дополнительные сведения см. в разделе строка (справочник по C#).

Использование имени формата для обращения к очереди

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

Тип очереди

Используемый в имени формата синтаксис

Общая очередь

FORMATNAME:PUBLIC=QueueGUID

Частная очередь

FORMATNAME:PRIVATE=MachineGUID\QueueNumber

Очередь журнала

FORMATNAME:PUBLIC=QueueGUID;JOURNAL   

– либо –

FORMATNAME:PRIVATE=MachineGUID\QueueNumber;JOURNAL

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

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

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

  • Имейте в виду, что имена форматов могут стать недействительны при изменении топографии сети или при удалении или повторном создании очереди.

Имя формата очереди можно извлечь, обратившись к свойству FormatName в классе MessageQueue.

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

MessageQueue1.Path = _
   "FORMATNAME:PUBLIC=3d3dc813-c555-4fd3-8ce0-79d5b45e0d75"
     MessageQueue1.Path =
           "FORMATNAME:PUBLIC=3d3dc813-c555-4fd3-8ce0-79d5b45e0d75";

Использование меток для обращения к очередям

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

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

Метку очереди можно извлечь, обратившись к свойству Label в классе MessageQueue.

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

MessageQueue1.Path = "LABEL:MyQueue"
     MessageQueue1.Path = "LABEL:MyQueue";

Дополнительные сведения см. в разделах Практическое руководство. Установка ссылок на очередь.

См. также

Задачи

Практическое руководство. Создание очередей

Практическое руководство. Создание экземпляров компонента MessageQueue

Другие ресурсы

Создание, удаление и администрирование очередей