Рекомендации по созданию ссылок на очередь
Обновлен: Ноябрь 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";
Примечание. |
---|
Вместо синтаксиса @".\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