Freigeben über


Schnittstellen für einen asynchronen Sendeadapter

Adapter, die Nachrichten einzeln nacheinander senden, können dies entweder synchron oder asynchron durchführen. Ein Adapter sendet Nachrichten asynchron, wenn er während der Sendevorgänge einen separaten Thread verwenden, anstatt den Transportproxythread zu blockieren. Um Nachrichten asynchron senden zu können, benötigt ein Adapter die folgenden Schnittstellen:

  • IBTTransport

  • IBaseComponent

  • IBTTransportControl

  • IPersistPropertyBag

  • IBTTransmitter

    Nachfolgend werden die einzelnen Aktionen beschrieben, die der Sendeadapter durchführt, um auf Anforderung der Messaging-Engine Nachrichten aus dem Server zu übertragen:

  1. Die Messaging-Engine verwendet den Transportproxy, um eine ausgehende Nachricht an einen Sendeadapter zu übergeben, indem die TransmitMessage-Methode der IBTTransmitter-Schnittstelle aufgerufen wird.

  2. Der Adapter kehrt sofort von TransmitMessage zurück, nachdem die Nachricht gespeichert wurde, die an eine interne Warteschlange gesendet werden soll, und gibt für bDeleteMessage zurückFalse. Dies zeigt der Messaging-Engine an, dass die Nachricht asynchron übertragen wird.

  3. Der Adapter sendet die Nachricht unter Verwendung seines eigenen Threadpools.

  4. Nach Abschluss des Sendevorgangs löscht der Adapter die ursprüngliche Nachricht aus der MessageBox-Datenbank. Es ruft einen Batch von der Messaging-Engine unter Verwendung der IBTTransportBatch.GetBatch-Methode des Transportproxys ab und ruft dann DeleteMessage auf.

    Die folgende Abbildung zeigt die am Erstellen eines asynchronen Sendeadapters beteiligten Objektinteraktionen.

    Abbildung, die die Objektinteraktionen zeigt, die beim Erstellen eines asynchronen Sendeadapters beteiligt sind.
    Workflow zum asynchronen Senden einer Nachricht

Hinweis

Es wird empfohlen, dass der Adapter die Anzahl der Nachrichten festhält, die gerade verarbeitet werden. Der Adapter sollte die Terminate-Methode blockieren, bis die Nachrichtenanzahl 0 erreicht hat. Für Sendeadapter sollten Nachrichten, die verarbeitet werden, entsprechend behandelt werden. Das bedeutet, dass jede Nachricht, die erfolgreich asynchron übermittelt wurde, aus der privaten Nachrichtenwarteschlange des Adapters für die Anwendung gelöscht werden sollte, um zu verhindern, dass Nachrichten doppelt gesendet werden. Im Allgemeinen akzeptiert es nach dem Aufruf von "Beenden " durch das Messaging-Modul keine Anforderungen zum Veröffentlichen neuer Nachrichten vom Adapter. Davon ausgenommen sind Antwortnachrichten für Paare vom Typ Antwort anfragen.

Weitere Informationen

Adaptervariablen
Entwickeln eines Sendeadapters
Instanziieren und Initialisieren eines Sendeadapters
Schnittstellen für einen synchronen Sendeadapter
Schnittstellen für einen synchronen Sendeadapter mit Batchunterstützung
Schnittstellen für einen asynchronen Sendeadapter mit Batchunterstützung
Schnittstellen für einen transaktionalen, asynchronen Sendeadapter mit Batchunterstützung
Schnittstellen für einen Sendeadapter vom Typ „Antwort anfragen“