SendMSMQMessage
Im Beispiel SendMSMQMessage wird veranschaulicht, wie eine Nachricht von einer .NET-Anwendung an einen MSMQ-Port gesendet wird. Es enthält auch Anweisungen zum Konfigurieren von Microsoft BizTalk Server für die Verwendung eines MSMQ-Empfangsspeicherorts.
Beachten Sie, dass viele Vorgänge in Message Queuing asynchron ausgeführt werden. Das heißt, viele MSMQ-API-Aufrufe (z . B. System.Messaging.MessageQueue.Send) kehren an den Aufrufer zurück, bevor der angeforderte Vorgang vollständig abgeschlossen ist. MSMQ stellt einen Mechanismus bereit, über den nach Beendigung des Vorgangs Feedback an die Anwendung gesendet werden kann. Dieser Mechanismus beinhaltet die Verwendung einer "Admin-Warteschlange". MSMQ gibt Feedback in Form einer Nachricht in der Admin-Warteschlange zurück. Die Verwaltungswarteschlange, an die MSMQ Feedback zurückgibt, wird angegeben, wenn der ursprüngliche MSMQ-API-Aufruf ausgeführt wird. So kann die Anwendung beispielsweise beim Senden einer Nachricht mit der System.Messaging.MessageQueue.Send-API den Namen einer Admin-Warteschlange angeben, indem sie die eigenschaft PROPID_M_ADMIN_QUEUE nachricht für die Nachricht verwendet, die im Aufruf von System.Messaging.MessageQueue.Send übergeben wird. Auch wenn die Anwendung möglicherweise einen erfolgreichen Rückgabecode für den System.Messaging.MessageQueue.Send-Aufruf erhält, schreibt MSMQ eine Nachricht in die angegebene Admin Queue, wenn der Vorgang zum Senden von Nachrichten anschließend fehlschlägt. Wenn die Anwendung keine Verwaltungswarteschlange angibt, hat der Sendefehler zur Folge, dass die Nachricht verloren geht, und es können keine Diagnoseinformationen aufgezeichnet werden - faktisch verschwindet die Nachricht, ohne Spuren zu hinterlassen. Es gibt eine Reihe von Fehlersituationen in MSMQ, die dazu führen können, dass dies geschieht, z. B. ein nicht transaktionales Senden an eine Transaktionswarteschlange.
Im Kontext dieses Beispiels ist es wichtig, dass der Code im Aufruf von System.Messaging.MessageQueue.Send einen Transaktionstyp angibt, der mit der Transaktionsunterstützung konsistent ist, die für die Warteschlange angegeben ist, an die die Nachricht gesendet wird. Gibt es hier keine Übereinstimmung und ist keine Verwaltungswarteschlange angegeben (wie in diesem Beispiel), verwirft MSMQ die gesendete Nachricht ohne jeglichen Hinweis (d. h., es wird kein Fehlercode an die Anwendung zurückgegeben, es werden keine Diagnoseinformationen in das Ereignisprotokoll geschrieben usw.).
<Beispielpfad>\AdaptersUsage\SendMSMQMessage\
In der folgenden Tabelle werden die Dateien in diesem Beispiel samt Zweck beschrieben.
Dateien | BESCHREIBUNG |
---|---|
App.ico, AssemblyInfo.cs, SendMSMQMessage.csproj, SendMSMQMessage.sln | Projekt-, Projektmappen- und zugehörige Dateien für die einfache grafische Anwendung für dieses Beispiel |
Form1.cs, Form1.resx | Stellen Sie Microsoft Visual C#.NET-Quell- und Formulardateien für die einfache grafische Anwendung für dieses Beispiel bereit. |
Sie können den Code in der einfachen grafischen Anwendung, die in diesem Beispiel enthalten ist, als Beispiel für das Senden von Nachrichten an MSMQ-Empfangsspeicherorte in BizTalk Server verwenden. NET-fähige Anwendungen wie Microsoft Office, von ASP.NET Seiten usw.
Öffnen Sie in Visual Studio die Projektmappendatei SendMSMQMessage.sln.
Klicken Sie im Menü Erstellen auf Projektmappe erstellen.
Verwenden Sie die folgenden Verfahren, um BizTalk Server zu konfigurieren und die MSMQ-Warteschlange für die Ausführung des Beispiels zu erstellen.
Klicken Sie auf Start, klicken Sie mit der rechten Maustaste auf Computer, und klicken Sie dann auf Verwalten.
Erweitern Sie den Knoten Features . Wenn Message Queuing nicht installiert ist, klicken Sie mit der rechten Maustaste auf Features , und wählen Sie Features hinzufügen aus. Aktivieren Sie Message Queuing, klicken Sie auf Weiter, und klicken Sie dann auf Installieren , um MSMQ auf diesem System zu installieren.
Erweitern Sie den Knoten Message Queuing .
Klicken Sie mit der rechten Maustaste auf den Knoten Private Warteschlangen , klicken Sie auf Neu, und klicken Sie dann auf Private Warteschlange.
Geben Sie unter Warteschlangenname ein
test
. Stellen Sie sicher, dass das Kontrollkästchen Transaktion aktiviert ist.Klicken Sie auf OK.
Klicken Sie auf Start, klicken Sie mit der rechten Maustaste auf Computer, und klicken Sie dann auf Verwalten.
Erweitern Sie Dienste und Anwendungen, und erweitern Sie dann den Knoten Message Queuing .
Hinweis
Wenn Message Queuing nicht auf dem Computer installiert ist, wechseln Sie zu Systemsteuerung > Programme > und Features, und wählen Sie dann Windows-Features aktivieren oder deaktivieren aus. Überprüfen Sie alle Features unter Microsoft Message Queue (MSMQ) Server, und klicken Sie dann auf OK.
Klicken Sie mit der rechten Maustaste auf den Knoten Private Warteschlangen , klicken Sie auf Neu, und klicken Sie dann auf Private Warteschlange.
Geben Sie unter Warteschlangennametest ein. Stellen Sie sicher, dass das Kontrollkästchen Transaktion aktiviert ist.
Klicken Sie auf OK.
Wählen Sie einen Ordner für den Empfang von Nachrichten aus. Bei den folgenden Schritten wird davon ausgegangen, dass Sie C:\Demo\Report ausgewählt haben, Sie können die Schritte jedoch nach Bedarf für einen anderen Ordner anpassen.
Öffnen Sie die BizTalk Server-Verwaltungskonsole.
Erstellen Sie eine neue Anwendung mit dem Namen MSMQSample.
Klicken Sie mit der rechten Maustaste auf Empfangsports, klicken Sie auf Neu, und klicken Sie dann auf Unidirektionale Empfangsport.
Geben Sie im Dialogfeld Eigenschaften des Empfangsports im Feld Nameden Namen MyReceivePort ein, und klicken Sie dann auf OK.
Klicken Sie mit der rechten Maustaste auf Empfangsorte, klicken Sie auf Neu, und klicken Sie dann auf Unidirektionale Empfangsadresse. Wählen Sie im Dialogfeld Empfangsport auswählen den soeben erstellten Empfangsport aus, und klicken Sie auf OK.
Geben Sie im Dialogfeld Eigenschaften des Empfangsspeicherorts im Feld Name einen Namen für den Empfangsport ein, z. B. MSMQReceiveLocation.
Wählen Sie im Dialogfeld Eigenschaften des Empfangsspeicherorts als Transporttyp die Option MSMQ aus.
Klicken Sie auf Konfigurieren , um das Dialogfeld MSMQ-Transporteigenschaften zu öffnen. Legen Sie Warteschlange auf
localhost\private$\test
fest, legen Sie Transaktional auf festTrue
, und klicken Sie dann auf OK.Erweitern Sie die Anwendung, wählen Sie Sendeports, Neu und statischen unidirektionalen Sendeport aus.
Geben Sie im Dialogfeld Porteigenschaften senden im Feld Name einen Namen für den Sendeport ein, z. B. MySendPort.
Legen Sie die Eigenschaft Transporttyp auf FILE fest.
Klicken Sie auf Konfigurieren , um das Dialogfeld Dateitransporteigenschaften zu öffnen.
Legen Sie im Dialogfeld Dateitransporteigenschaften die Eigenschaft Zielordner auf C:\Demo\Report fest, behalten Sie die Standardeinstellungen für die anderen Eigenschaften bei, und klicken Sie dann auf OK.
Wählen Sie Filter aus, und fügen Sie dann eine neue Zeile hinzu, indem Sie Eigenschaft auf BTS festlegen. ReceivePortName. Lassen Sie die Operatorspalte auf ==festgelegt, legen Sie die Spalte Wert auf MyReceivePort fest, und klicken Sie dann auf OK.
Klicken Sie mit der rechten Maustaste auf Ihren neuen Sendeport, und klicken Sie dann auf Eintragen.
Klicken Sie erneut mit der rechten Maustaste auf Ihren neuen Sendeport, und klicken Sie dann auf Start.
Klicken Sie mit der rechten Maustaste auf Ihren neuen Empfangsspeicherort, und klicken Sie dann auf Aktivieren.
BizTalk Server ist jetzt bereit, mit diesem Beispiel zu arbeiten.
Führen Sie die folgenden Schritte aus, um das Beispiel SendMSMQMessage auszuführen.
Navigieren Sie in einem Befehlsfenster zum folgenden Ordner:
<Beispielpfad>\AdaptersUsage\SendMSMQMessage\bin\Debug
Führen Sie die Datei SendMSMQMessage.exe aus, wodurch die grafische Anwendung gestartet wird, die die Benutzeroberfläche für dieses Beispiel bereitstellt.
Geben Sie in der grafischen Anwendung im Feld BizTalk-Computername den Namen des lokalen Computers ein.
Versuchen Sie die Option Umschlossen senden :
Ändern Sie optional den Text im Feld Nachrichtentext .
Klicken Sie auf Umschlossen senden.
Wenn der Vorgang erfolgreich ausgeführt wird, geschieht Folgendes:
Das Wort Erfolg wird in roter Schrift im Feld direkt über den Schaltflächen angezeigt.
Im Zielordner C:\Demo\Reports wird eine Datei angezeigt. Diese Datei enthält den Text aus dem Feld Nachrichtentext , der von der .NET-Nachrichtenwarteschlangenbibliothek in einfache XML-Tags umschlossen ist.
Wenn bei diesem Vorgang ein Fehler auftritt, wird in dem Feld über den Schaltflächen eine Fehlermeldung angezeigt.
Probieren Sie die Option Exakt senden aus:
Ändern Sie optional den Text im Feld Nachrichtentext .
Klicken Sie auf Exakt senden.
Wenn der Vorgang erfolgreich ausgeführt wird, geschieht Folgendes:
Das Wort Erfolg wird in roter Schrift im Feld direkt über den Schaltflächen angezeigt.
Im Zielordner C:\Demo\Reports wird eine Datei angezeigt. Diese Datei enthält den Text aus dem Feld Nachrichtentext genau so, wie er im Textfeld angezeigt wird.
Wenn bei diesem Vorgang ein Fehler auftritt, wird in dem Feld über den Schaltflächen eine Fehlermeldung angezeigt.