Freigeben über


Empfehlungen für Warteschlangenverweise

Aktualisiert: November 2007

Wenn Sie eine Instanz der MessageQueue-Komponente erstellen, müssen Sie angeben, mit welcher Warteschlange die Komponente kommunizieren soll. Es gibt drei Möglichkeiten, im Code auf eine Warteschlange zu verweisen:

  • Durch Pfad – der Pfad zu einer Warteschlange ist eine eindeutige Identifizierung des Computers und des Warteschlangennamens für die gewünschte Warteschlange.

  • Durch Formatnamen – ein eindeutiger Bezeichner für die Warteschlange, die von MSMQ beim Erstellen der Warteschlange oder später von der Anwendung generiert wird.

  • Durch Bezeichnung – ein beschreibender und möglicherweise nicht eindeutiger Name für die Warteschlange, die vom Warteschlangenadministrator beim Erstellen der Warteschlange zugewiesen wird.

Sie müssen den Pfad verwenden, wenn Sie eine neue Warteschlange und nicht eine neue Instanz der MessageQueue-Komponente erstellen. Formatname und Bezeichnung werden vom Message Queuing-System zugewiesen, nachdem die Warteschlange erstellt wurde. Wenn Sie im Code oder aus der Toolbox auf eine vorhandene Warteschlange verweisen, können Sie jedoch die gewünschte Verweismethode auswählen. Die gewählte Methode wird in der Path-Eigenschaft der Komponente gespeichert.

Verweis auf eine Warteschlange durch einen Pfad

Ein Warteschlangenpfad hat das Format servername\queuename. Pfade zu einer Warteschlange sind immer eindeutig. In der folgenden Tabelle sind die Pfadinformationen aufgelistet, die für die verschiedenen Warteschlangentypen verwendet werden:

Warteschlangentyp

Pfadsyntax

Öffentliche Warteschlange

MachineName\QueueName

Private Warteschlange

MachineName\Private$\QueueName

Journalwarteschlange

MachineName\QueueName\Journal$

Journalwarteschlange des Computers

MachineName\Journal$

Warteschlange des Computers für unzustellbare Meldungen

MachineName\Deadletter$

Transaktionswarteschlange des Computers für unzustellbare Meldungen

MachineName\XactDeadletter$

Sie können für den logischen Computernamen "." verwenden, sodass "YourMachine\MyQueue" gleichbedeutend ist mit ".\MyQueue".

Folgende Punkte sprechen gegen einen Pfad als Verweis auf Warteschlangen:

  • Wenn der Domänencontroller auf einem Message Queuing-Server eine Operation für eine Warteschlange empfängt, auf die mit einem Pfad verwiesen wird, muss er den Pfad auflösen und den Formatnamen der betroffenen Warteschlange bestimmen. Dies kann zu einer etwas geringeren Leistung führen, als wenn Sie direkt mit dem Formatnamen auf die Warteschlange verweisen.

  • Wenn Sie die Komponente für die Verwendung als XML-Webdienst entwerfen, erzielen Sie die beste Leistung, wenn Sie nicht über Pfade auf Warteschlangen verweisen, sondern über die Formatnamen.

  • Sie können nicht durch einen Pfad auf eine Warteschlange verweisen, wenn Sie Meldungen an die Warteschlange senden möchten und keine Verbindung zu ihr besteht. Meldungen, die an nicht verbundene Warteschlangen gesendet werden, müssen unter Verwendung des Formatnamens gesendet werden.

Sie können den Pfad einer Warteschlange abrufen, indem Sie die Rückgabeergebnisse von zwei separaten Eigenschaften in der MessageQueue-Basisklasse (MachineName-Eigenschaft und QueueName-Eigenschaft) abfragen und miteinander kombinieren.

Im Code sieht der Verweis auf eine Warteschlange anhand des Pfades wie folgt aus:

MessageQueue1.Path = "YourMachine\MyQueue"
     MessageQueue1.Path = @"YourMachine\MyQueue";
Hinweis:

Die @".\MyQueue"-Syntax für C# entspricht der Verwendung von ".\\MyQueue". Das Zeichen @ gibt eine Zeichenfolge an. Weitere Informationen finden Sie unter string (C#-Referenz).

Verweis auf eine Warteschlange durch Formatnamen

Formatnamen haben die Form einer Zeichenfolge, die angibt, ob es sich bei einer Warteschlange um eine öffentliche oder eine private Warteschlange handelt, gefolgt von einer generierten GUID für die Warteschlange sowie anderen Bezeichnern. In der folgenden Tabelle sind die Pfadinformationen aufgelistet, die für die verschiedenen Warteschlangentypen verwendet werden:

Warteschlangentyp

Formatnamensyntax

Öffentliche Warteschlange

FORMATNAME:PUBLIC=QueueGUID

Private Warteschlange

FORMATNAME:PRIVATE=MachineGUID\QueueNumber

Journalwarteschlange

FORMATNAME:PUBLIC=QueueGUID

– oder –

FORMATNAME:PRIVATE=MachineGUID\QueueNumber;JOURNAL

Einer Warteschlange wird kein Formatname zugewiesen; der Warteschlangenmanager generiert diesen Wert stattdessen beim Erstellen der Warteschlange. Der Verweis auf eine Warteschlange durch ihren Formatnamen ist die direkteste Art, um auf eine Warteschlange zuzugreifen. Dies liegt daran, dass der Verweis nicht vom Domänencontroller auf dem Server interpretiert werden muss, wie dies bei einem Verweis durch Pfad der Fall ist.

Hier sind ein paar Tipps zum Verweisen auf Warteschlangen durch Formatnamen:

  • Wenn Meldungen an eine nicht verbundene Warteschlange gesendet werden sollen, muss der Verweis auf die Warteschlange durch den Formatnamen und nicht durch den Pfad erfolgen, weil der Pfad nicht aufgelöst werden kann, wenn die Warteschlange offline ist.

  • Sie müssen sich darüber im Klaren sein, dass Formatnamen ungültig werden können, wenn die Netzwerktopographie geändert oder eine Warteschlange gelöscht und erneut erstellt wird.

Sie können einen Formatnamen für eine Warteschlange abrufen, indem Sie die FormatName-Eigenschaft in der MessageQueue-Klasse abfragen.

Im Code sieht der Verweis auf eine Warteschlange anhand des Formatnamens wie folgt aus:

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

Verweis auf Warteschlangen durch Bezeichnungen

Sie können auch über die Bezeichnung einer Warteschlange auf eine Warteschlange verweisen. Die Bezeichnung ist ein beschreibender Text, der der Warteschlange vom Administrator zugewiesen wurde. Bezeichnungen sind nicht immer eindeutig. Wenn Sie versuchen, über die Bezeichnung eine Verbindung zu einer Warteschlange herzustellen, wird bei einem Namenskonflikt daher ein Fehler ausgegeben.

Bezeichnungen können dann nützlich sein, wenn Sie wissen, dass Sie eine Warteschlange von einem Computer auf einen anderen verschieben werden. Wenn Sie nur über die Bezeichnung auf die Warteschlange verweisen, funktionieren alle Operationen auch dann, wenn die Warteschlange an die neue Position verschoben wurde. Voraussetzung dafür ist allerdings, dass es keine anderen Warteschlangen mit dieser Bezeichnung auf dem neuen Computer gibt. Wenn Warteschlangen mit derselben Bezeichnung vorhanden sind, gibt die Send-Methode einen Fehler aus.

Sie können die Bezeichnung einer Warteschlange abrufen, indem Sie die Label-Eigenschaft in der MessageQueue-Klasse abfragen.

Im Code sieht der Verweis auf eine Warteschlange anhand der Bezeichnung wie folgt aus:

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

Siehe auch

Aufgaben

Gewusst wie: Erstellen von Warteschlangen

Gewusst wie: Erstellen von Instanzen von MessageQueue-Komponenten

Weitere Ressourcen

Erstellen, Löschen und Verwalten von Warteschlangen