Freigeben über


DynamicReceive-Beispiel (BizTalk Server-Beispiel)

Das Beispiel DynamicReceive veranschaulicht, wie BizTalk Server Nachrichten von einer MQSeries-Warteschlange empfangen werden, wenn der URI für die MQSeries-Warteschlange dynamisch angegeben wird.

Ziel des Beispiels

In diesem Beispiel wird dynamisch eine MQSeries-Warteschlange erstellt, wie durch die Variablen queueManager, queue und server angegeben. Es ermöglicht ein dynamisches Empfangsszenario und ruft BizTalk Server Nachrichten aus der dynamisch angegebenen MQSeries-Warteschlange basierend auf den Filterkriterien ab, die in den MQMD_MsgId- und MQMD_CorrelId-Nachrichteneigenschaften angegeben sind.

Konzeption und Aufgabe dieses Beispiels

Der MQSeries-Adapter kann Nachrichten dynamisch aus einer MQSeries-Warteschlange empfangen, indem die URI-Adresse der Warteschlange in der Orchestrierung angegeben wird. Diese Funktionalität wird erreicht, indem in der Orchestrierung ein Sendeport vom Typ "Antwort anfragen" verwendet wird.

Um Nachrichten dynamisch zu empfangen, geben Sie Folgendes in einer Ausdrucksform in der Orchestrierung an:

  1. Aktivieren Sie den dynamischen Empfang, indem Sie die folgende Eigenschaft für die BizTalk Server Meldung festlegen: MQSeries.DynamicReceive = 'Yes'

  2. Geben Sie die Adresse an, an der die Nachrichten abgerufen werden sollen, indem Sie den Port-URI festlegen. Optional können Sie Folgendes angeben:

    • Geben Sie das Wartezeitintervall vor dem Abrufen der Nachrichten mithilfe der MQSeries.WaitInterval-Eigenschaft für die Nachricht an.

    • Geben Sie Übereinstimmungskriterien für den Empfang von Nachrichten an. Die Übereinstimmungskriterienoptionen sind Message ID, CorrelationID, GroupID und MessageSequenceNumber. Weitere Informationen finden Sie unter https://go.microsoft.com/fwlink/?LinkId=89396 "Eigenschaften im Zusammenhang mit BizTalk Server".

    Nach Erstellung der Nachricht mit diesen Eigenschaften wird sie über einen Sendeport vom Typ "Antwort anfragen" an die MQSeries-Warteschlange gesendet. Der Port gibt den Adapter zum Empfangen von Nachrichten vom angegebenen URI mit den festgelegten Übereinstimmungsoptionen an. Die folgenden Aktionen führen zu Folgendem:

  • Wenn die Filterkriterien zum Abrufen einer Nachricht erfüllt sind, wird die Nachricht aus der Warteschlange abgerufen und zurück an die Orchestrierung gesendet.

  • Wenn die Filterkriterien zum Abrufen einer Nachricht nicht erfüllt sind, wird eine Pseudoantwort zurückgegeben. Dies ist ein Hinweis, dass über die angegebenen Optionen keine Nachrichten aus der Warteschlange zurückgegeben wurden.

    Das Arbeiten mit der dynamischen Empfangsfunktion ermöglicht zusätzliche Flexibilität, da kein fester Empfangsspeicherort erforderlich ist. In einigen Fällen lernen Sie den URI erst zur Laufzeit kennen. Mithilfe der dynamischen Empfangsfunktion können Sie dynamisch bestimmen, von wo Nachrichten abgerufen werden sollen. Dies bedeutet ferner, dass Sie in einer Orchestrierung keinen Warteschlangenvertrag implementieren müssen. Sie können den Abruf von Nachrichten abwarten, indem Sie einen dynamisch angegebenen URI in der MQSeries-Warteschlange basierend auf den angegebenen Übereinstimmungskriterien verwenden.

Speicherort dieses Beispiels

<Beispielpfad>\Samples\AdaptersUsage\MQSeriesAdapter\DynamicReceive

In der folgenden Tabelle werden die Dateien in diesem Beispiel samt Zweck beschrieben.

Datei BESCHREIBUNG
DynamicReceive.btproj,

DynamicReceive.sln
Projekt- und Projektmappendateien für die Anwendung.
DynamicReceive e.odx Die BizTalk-Orchestrierungsdatei für die Anwendung.
Setup.bat Batchdatei zum Erstellen der Schlüsseldatei, Kompilieren des Projekts und seine Bereitstellung.

Verwenden dieses Beispiels

Geben Sie die Microsoft.XLANGs.BaseTypes.Address an , die für Ihre Lösung sinnvoll ist. Ändern Sie MQSeries.WaitInterval , um anzugeben, wann Sie die Antwortnachrichten empfangen möchten. Aktualisieren (oder Hinzufügen) der Übereinstimmungsoptionen, oder entfernen Sie sie, wenn Sie alle Nachrichten abrufen möchten.

Erstellen und Ausführen des Beispiels

So erstellen Sie das Beispiel

  1. Erstellen Sie ein neues Orchestrierungsprojekt in Microsoft Visual Studio.

  2. Aktivieren Sie den dynamischen Empfangsvorgang, indem Sie die MQSeries.DynamicReceive-Eigenschaft für die BizTalk Server Nachricht auf 'Yes'festlegen.

  3. Geben Sie die Adresse an, von der die Nachrichten abgerufen werden sollen, indem Sie den Port-URI festlegen.

  4. Die beiden folgenden Eigenschaften können optional angegeben werden:

    1. Geben Sie ein Warteintervall an, bevor Sie die Nachrichten mithilfe der MQSeries.WaitInterval-Eigenschaft für die Nachricht abrufen.

    2. Geben Sie Übereinstimmungskriterien für den Empfang von Nachrichten an. Weitere Einzelheiten finden Sie in der Hilfe zu den Übereinstimmungsoptionen.

  5. Ändern Sie die folgenden Variablen in der Orchestrierung, um anzugeben, von wo die Nachrichten abgerufen werden sollen:

    • Queue, QueueManager und Server. Diese werden verwendet, um den URI im Ausdrucks-Shape zu erstellen.
  6. Ändern Sie das Ausdrucks-Shape so, dass dynamische Warteschlangenerstellungs- und Abgleichsoptionen nach Bedarf auskommentieren.

  7. Es gibt folgende Möglichkeiten, das Projekt zu erstellen und bereitzustellen:

    • Öffnen Sie die Projektmappe, klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und klicken Sie auf Eigenschaften , um die Projekteigenschaften anzuzeigen. Klicken Sie auf der Registerkarte Signatur im Dropdownfeld Schlüsseldatei mit starkem Namen auswählen auf <Neu>. Geben Sie einen Schlüsseldateinamen an, und stellen Sie die Datei bereit.

    • Alternativ können Sie die Datei setup.bat zum Erstellen der Schlüsseldatei, Kompilieren des Projekts und für seine Bereitstellung ausführen.

So führen Sie das Beispiel aus

  1. Binden Sie die Orchestrierung an den BizTalk-Host.

  2. Aktivieren Sie den von der Orchestrierung erstellten Empfangsport. Ändern Sie den Empfangsspeicherort der Datei von c:\temp\in in den richtigen Dateiordner.

  3. Tragen Sie die beiden erstellten Sendeports ein, und starten Sie sie. Ein Port ist ein dynamischer Port vom Typ "Antwort anfragen", während der andere einen Dateisendeport und die Warteschlange darstellt, in die die Nachricht gesendet wird. Vergewissern Sie sich, dass er auf den ordnungsgemäßen Speicherort festgelegt ist.

  4. Legen Sie zum Starten der Orchestrierung eine Datei im Eingabeordner ab. Dadurch wird der MQSeries-Adapter aufgerufen und die MQSAgent2 COM+-Komponente auf dem angegebenen Server aufgerufen, um die Nachricht abzurufen. Die empfangene Datei wird im Ordnerspeicherort angezeigt, der im Dateisendeport angegeben ist.

  5. Wenn keine Nachricht gefunden wird, die den in der Ausdrucksform angegebenen Kriterien entspricht, wird eine Dummynachricht im Ausgabeordner abgelegt. Um Übereinstimmungsoptionen zu deaktivieren, kommentieren Sie die letzten beiden Zeilen in der Ausdrucksform aus.

Kommentare

  • Wenn die Warteschlange dynamisch erstellt, aber nicht gelöscht wird, kommt es bei der Aktivierung der nächsten Orchestrierungsinstanz zu Fehlern.

  • Es gibt andere Möglichkeiten zum dynamischen Festlegen des URI. In diesem Beispiel wird nur eine Option verwendet. Der URI kann beispielsweise festgelegt wird, indem im Nachrichtenkontext eine bestimmte Eigenschaft gelesen wird.

  • Wenn die Warteschlange keine Nachrichten enthält, welche die Übereinstimmungsoptionen erfüllen, wird eine Pseudonachricht zurückgegeben.

  • Da dieses Beispiel dynamische Sendeports verwendet, müssen ggf. andere Optionen angegeben werden, z. B. Wiederholung und Transaktionen. Legen Sie diese Optionen mithilfe der vom Adapter zur Verfügung gestellten Kontexteigenschaften fest, bevor die Nachricht an den dynamischen Port vom Typ "Antwort anfragen" gesendet wird.

  • MQSeries-Warteschlangen können mithilfe der MQSAdapterAdmin2-Schnittstelle dynamisch erstellt und gelöscht werden. Ein Beispiel für die dynamische Erstellung von MQSeries-Warteschlangen finden Sie unter "Unterstützung für die Warteschlangenverwaltung" unter https://go.microsoft.com/fwlink/?LinkId=89400.