Gewusst wie: Programmgesteuertes Empfangen von Meldungen
Aktualisiert: November 2007
Mit der synchronen Methode Receive können Sie den Inhalt einer Warteschlange anzeigen lassen. Wenn Sie die Receive-Methode an einer Warteschlange aufrufen, entfernt das System die erste Meldung aus der Warteschlange und sendet diese an Sie zurück. Diese Meldung steht anderen Komponenten, die mit der Warteschlange arbeiten, anschließend nicht mehr zur Verfügung.
Hinweis: |
---|
Sie können auch die erste Meldung in einer Warteschlange anzeigen, ohne diese aus der Warteschlange zu entfernen. Weitere Informationen hierzu finden Sie unter Gewusst wie: Einsehen von Meldungen. Sie können Meldungen auch asynchron empfangen. Weitere Informationen hierzu finden Sie unter Gewusst wie: Asynchrones Empfangen von Meldungen. |
Wenn beim Aufrufen der Receive-Methode keine Meldungen in der Warteschlange enthalten sind, wartet die Methode so lange, bis die Warteschlange eine Meldung empfängt. Sie können ein Timeoutintervall angeben, wenn die Methode nur über einen bestimmten Zeitraum warten soll. Das Timeoutintervall wird als TimeSpan-Objekt angegeben.
Beim Lesen von Meldungen aus einer Warteschlange wird deren Inhalt beim Bearbeiten mit einem Formatierungsobjekt serialisiert und deserialisiert. Weitere Informationen hierzu finden Sie unter Einführung in das Lesen und Abrufen von Meldungen.
Die Receive-Methode liegt in mehreren Formen vor.
Die grundlegende Methode mit mehreren Überladungen, mit denen Sie beispielsweise Timeoutintervalle angeben können.
Die Methode ReceiveById, mit der Sie eine bestimmte Meldung anhand ihres Bezeichners abrufen können.
Die Methode ReceiveByCorrelationId, mit der Sie eine Meldung nach der Korrelations-ID abrufen können.
Eine Erläuterung zu Korrelations-IDs finden Sie unter Speichern von Meldungswarteschlangen in Journalen.
So rufen Sie eine Meldung programmgesteuert ab
Erstellen Sie eine Instanz der MessageQueue-Komponente, und legen Sie deren Path-Eigenschaft auf die Warteschlange fest, auf die Sie verweisen möchten. Weitere Informationen hierzu finden Sie unter Gewusst wie: Erstellen von Instanzen von MessageQueue-Komponenten.
Geben Sie das Formatierungsprogramm an, mit dem die Meldung abgerufen werden soll. Weitere Informationen hierzu finden Sie unter Gewusst wie: Festlegen des Formatierungsprogramms für abgerufene Meldungen.
Erstellen Sie eine Instanz des Message-Objekts zum Speichern der abgerufenen Meldung.
Rufen Sie die Receive-Methode auf, um die Meldung aus der Warteschlange zu entfernen:
Tipp: Um ein Timeout für die Receive-Methode festzulegen, geben Sie mithilfe eines TimeSpan-Objekts die Wartezeit für die Methode an.
Dim mq As New System.Messaging.MessageQueue(".\MyQueue") mq.Send("1", "1") Dim m As System.Messaging.Message m = mq.Receive(New TimeSpan(0, 0, 3)) m.Formatter = New _ System.Messaging.XmlMessageFormatter(New String() _ {"System.String,mscorlib"}) Console.WriteLine(m.Body)
System.Messaging.MessageQueue mq = new System.Messaging.MessageQueue(".\\MyQueue"); mq.Send("1", "1"); System.Messaging.Message m = mq.Receive(new TimeSpan(0, 0, 3)); m.Formatter = new System.Messaging.XmlMessageFormatter(new string[] { "System.String,mscorlib" }); Console.WriteLine(m.Body);
Dieses Codebeispiel ist auch als Visual Basic-IntelliSense-Codeausschnitt verfügbar. Sie finden das Element in der Codeausschnittauswahl unter Windows-Betriebssystem > Meldungswarteschlangen. Weitere Informationen finden Sie unter Gewusst wie: Einfügen von Ausschnitten in den Code (Visual Basic).
Siehe auch
Aufgaben
Gewusst wie: Einsehen von Meldungen
Gewusst wie: Asynchrones Empfangen von Meldungen
Gewusst wie: Erstellen von Instanzen von MessageQueue-Komponenten
Gewusst wie: Festlegen des Formatierungsprogramms für abgerufene Meldungen