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:
Die Messaging-Engine verwendet den Transportproxy, um eine ausgehende Nachricht an einen Sendeadapter zu übergeben, indem die TransmitMessage-Methode der IBTTransmitter-Schnittstelle aufgerufen wird.
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ück
False
. Dies zeigt der Messaging-Engine an, dass die Nachricht asynchron übertragen wird.Der Adapter sendet die Nachricht unter Verwendung seines eigenen Threadpools.
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.
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“