Geordnete Übermittlung von Nachrichten in BizTalk ServerOrdered Delivery of Messages in BizTalk Server

Durch die geordnete Übermittlung von Nachrichten wird sichergestellt, dass Nachrichten, die in der MessageBox-Datenbank in einer bestimmten Reihenfolge veröffentlicht werden, in derselben Reihenfolge an den jeweiligen Abonnenten übermittelt werden, in der sie in der Datenbank veröffentlicht wurden.Ordered message delivery ensures that messages that are published to the MessageBox database in a given order are delivered to each matching subscriber in the same order in which they were published to the message box.

Konfigurieren der geordneten Übermittlung von NachrichtenConfiguring Ordered Message Delivery

Die geordnete Übermittlung von Nachrichten kann an den folgenden Stellen konfiguriert werden:Ordered message delivery can be configured in the following places:

  • Form " empfangen " in einer OrchestrierungReceive shape in an orchestration
  • SendeportSend port

Geordnete Übermittlung mit vorhandenen TransportenOrdered Delivery with Existing Transports

Die Protokolle, die bestimmten Transporten zugrunde liegen (z. B. FILE und HTTP), sind nicht mit dem Konzept der geordneten Übermittlung vereinbar.The protocols underlying certain transports, such as FILE and HTTP, are not consistent with the notion of ordered delivery. Wenn die geordnete Übermittlung jedoch für einen Port festgelegt ist, der an einen solchen Transport gebundenen ist, erzwingt BizTalk Server die geordnete Übermittlung dennoch. Dazu wird sichergestellt, dass der Transport die nächste ausgehende Nachricht erst erhält, wenn die aktuelle erfolgreich gesendet wurde.However, even with such transports, if the port bound to the transport is marked for ordered delivery, then BizTalk Server enforces ordered delivery by ensuring that the transport does not get the next outbound message until the current one has been successfully sent. Um dies zu erreichen, übergibt BizTalk Server jede Nachricht in einem einzelnen Batch an den Adapter des Transports und wartet, bis der Adapter die Nachricht erfolgreich aus der Messagebox gelöscht hat, bevor die nächste Nachricht im nächsten Batch an den Adapter übermittelt wird.To achieve this, BizTalk Server passes each message to the transport's adapter in a single batch and waits until the adapter has successfully deleted the message from the message box before delivering the next message, in another batch, to the adapter.

Geordnete Übermittlung für benutzerdefinierte AdapterOrdered Delivery for Custom Adapters

Bei benutzerdefinierten Empfangsadaptern müssen besondere Aspekte beachtet werden.There are special considerations for custom receive adapters. Wenn Sie einen benutzerdefinierten Adapter erstellen, der eine geordnete Übermittlung beim Empfang unterstützt, muss der Adapter folgende Aktionen ausführen:It you are writing a custom adapter that supports ordered delivery on receive, the adapter should do the following:

  • Nachdem Sie einen Batch von Nachrichten übermittelt haben, sollte der benutzerdefinierte Empfangs Adapter vor dem Senden des nächsten Batches auf den Batch Complete -Rückruf von BizTalk Server warten.After submitting a batch of messages, your custom receive adapter should wait for the BatchComplete callback from BizTalk Server before submitting the next batch. Weitere Informationen finden Sie unter Schnittstellen für einen Batch-Supported Empfangs Adapter.For more details, see Interfaces for a Batch-Supported Receive Adapter.

  • Wenn bei einer Nachricht in der Pipeline ein Fehler auftritt, muss sie (möglichst als nicht fortsetzbar) angehalten werden.If a message fails in the pipeline, it should be suspended, preferably as nonresumable. Verwenden Sie das BTS. Suspendasnonresuchange- Nachrichten Kontext Eigenschaft in BizTalk ServerBizTalk Server , um die Meldung entsprechend zu kennzeichnen.Use the BTS.SuspendAsNonResumable message context property in BizTalk ServerBizTalk Server to flag the message appropriately.

Hinweis

Die Reihenfolge der Nachrichten kann unterbrochen werden, wenn eine angehaltene Nachricht zu einem späteren Zeitpunkt fortgesetzt wird.Message order can be broken if a suspended message is later resumed. Wenn Sie das nicht wünschen, halten Sie die Nachrichten, bei denen Fehler auftreten, als nicht fortsetzbar an.If you do not want this behavior, suspend failed messages as nonresumable.

Weitere Informationen zum Entwickeln eines benutzerdefinierten Adapters finden Sie unter entwickeln von benutzerdefinierten Adaptern.For more details on building a custom adapter, see Developing Custom Adapters.

Bedingungen für die durchgängige Verarbeitung (End-to-End-Verarbeitung) von geordneten NachrichtenConditions for End-to-End Ordered Message Processing

Die folgenden Bedingungen müssen für eine durchgängige geordnete Übermittlung erfüllt sein:To provide end-to-end ordered delivery the following conditions must be met:

  • Nachrichten müssen mit einem Adapter empfangen werden, der die Reihenfolge der Nachrichten beibehält, wenn er diese an BizTalk Server sendet.Messages must be received with an adapter that preserves the order of the messages when submitting them to BizTalk Server. In BizTalk ServerBizTalk Server sind Beispiele für solche Adapter MSMQ und MQSeries.In BizTalk ServerBizTalk Server, examples of such adapters are MSMQ and MQSeries. Darüber hinaus können mit HTTP- bzw. SOAP-Adaptern Nachrichten geordnet gesendet werden. In diesem Fall muss jedoch der HTTP- bzw. SOAP-Client die Reihenfolge erzwingen, indem er die Nachrichten einzeln sendet.In addition, HTTP or SOAP adapters can be used to submit messages in order, but in that case the HTTP or SOAP client needs to enforce the order by submitting messages one at a time.

  • Sie müssen diese Nachrichten mit einem Sendeport abonnieren, bei dem die Option geordnete Übermittlung auf festgelegt ist True .You must subscribe to these messages with a send port that has the Ordered Delivery option set to True.

  • Wenn eine Orchestrierung verwendet wird, um die Nachrichten zu verarbeiten, sollte nur eine Instanz der Orchestrierung verwendet werden, die Orchestrierung muss für die Verwendung eines sequenziellen Konvois konfiguriert werden, und die Eigenschaft geordnete Übermittlung des Empfangsports der Orchestrierung sollte auf festgelegt werden True .If an orchestration is used to process the messages, only a single instance of the orchestration should be used, the orchestration should be configured to use a sequential convoy, and the Ordered Delivery property of the orchestration's receive port should be set to True.

BeschränkungenRestrictions

Die geordnete Übermittlung von Nachrichten wird nicht unterstützt von:Ordered delivery of messages is not supported for the following:

  • Dynamische Sendeports in BizTalk Server 2013 R2BizTalk Server 2013 R2 und früheren VersionenDynamic send ports in BizTalk Server 2013 R2BizTalk Server 2013 R2 and previous versions

  • Dynamische Sendeports in BizTalk Server 2016BizTalk Server 2016 (und neueren Versionen) für Adaptertypen, die die geordnete Übermittlung auf statischen Sendeports nicht unterstützenDynamic send ports in BizTalk Server 2016BizTalk Server 2016 (and any newer versions) for those adapter types that don't support ordered delivery on static send ports

  • Sekundären TransportenBackup transports

InteraktionenInteractions

Achten Sie auf die folgenden Interaktionen mit anderen konfigurierten Funktionen in BizTalk Server, wenn für einen Sendeport die geordnete Übermittlung konfiguriert ist:When ordered delivery is configured for a send port, be aware of the following interactions with other configured behaviors in BizTalk Server:

  • Die Einstellung "Zukünftige Nachrichten mit dem aktuellen Nachrichtenfehler nicht senden" auf demselben Sendeport:For the "Stop sending subsequent messages on current message failure" setting on the same send port:

    • Alarm.False. Nur die Nachricht, bei der ein Fehler aufgetreten ist, wird (als nicht fortsetzbar) angehalten. Alle nachfolgenden Nachrichten werden weiter verarbeitet.Only the failed message is suspended (as not resumable) and all subsequent messages continue to be processed. Dadurch wird die Reihenfolge der Nachrichten, bei denen kein Fehler aufgetreten ist, beibehalten, es können jedoch Lücken in der Reihenfolge entstehen.This preserves the ordering of the non-failed messages but can result in gaps in the sequence. Wenn beispielsweise die Bestellungen 101, 102 und 103 empfangen werden und Bestellung 102 angehalten wird, werden die Bestellungen 101 und 103 nacheinander verarbeitet.For example, if orders 101, 102, and 103 are received and order 102 is suspended, orders 101 and 103 will continue to be processed in order.

    • Fall.True. Die Sendeportinstanz wird angehalten, wenn beim Verarbeiten einer der Nachrichten Fehler auftreten.The send port instance is suspended if any of the messages fails processing. Dadurch werden alle nachfolgenden Nachrichten in der Gruppe geordneter Nachrichten angehalten.This causes all subsequent messages in the ordered set of messages to be suspended. Somit wird die Reihenfolge der Nachrichten beibehalten, indem nachfolgende Nachrichten erst nach der Übermittlung der Nachricht, bei der ein Fehler aufgetreten ist, übermittelt werden.This preserves message order by preventing delivery of subsequent messages before delivery of the failed message.

  • Wenn ein Sendeport vom Typ "Antwort Anfragen" den Wert "Sende nachfolgende Nachrichten bei aktueller Nachrichten Fehler beenden" hat und die wieder true herstellbare Austausch Verarbeitung für die Disassemblierungsstufe der Empfangs Pipeline für die Antwort konfiguriert ist, wird das Senden von Nachrichten durch den Sendeport nicht beendet (d. h. die Instanz wird nicht angehalten), wenn beim disassemblieren derIf a solicit-response send port has the "Stop sending subsequent messages on current message failure" property set to true, and if recoverable interchange processing is configured for the disassembly stage of the receive pipeline for the response, then the send port does not stop sending messages (that is, the instance is not suspended) if there is a recoverable error in disassembling the response.

  • Stellen Sie vor dem Löschen eines geordneten Sendeports sicher, dass diesem keine Instanzen zugeordnet sind.Before deleting an ordered send port, ensure that there are no instances associated with it. Wenn zugeordnete Instanzen vorhanden sind, müssen Sie diese vor dem Löschen des Sendeports beenden.If there are associated instances, you should terminate them before deleting the send port.

Geordnete Übermittlung an den DateitransportOrdered Delivery to File Transport

Nachrichten werden am Dateiadapter sequenziell empfangen.Messages arrive at the File adapter in sequence. Der Dateiadapter kann an eine einzelne Datei Nachrichten anfügen oder eine Dateifolge schreiben, was zu folgenden Ergebnissen führt:The File adapter may append messages to a single file or write out a sequence of files, with the following results:

  • Wenn Nachrichtendaten an eine Datei angefügt werden, werden einzelne Nachrichten geordnet angefügt.If message data is appended to a single file, individual messages are appended in order. Die Verwendung der Option zur geordneten Übermittlung an einem Sendeport, der den Dateiadapter verwendet, ist nur sinnvoll, wenn der Sendetransport im Anfügemodus arbeitet.The ordered delivery option on a send port that uses the FILE adapter only makes sense if the send transport works in append mode

  • Wenn Nachrichten in einzelne Dateien geschrieben werden, spiegelt sich die Reihenfolge in den Dateinamen wieder, die in der entsprechenden Reihenfolge benannt werden.If messages are written to individual files, the order is reflected in the file names, which are sequentially named. In diesem Fall geben bei vom Adapter geschriebenen Dateien die Dateisystemeigenschaften, die sich auf die Chronologie beziehen (z. B. Uhrzeit, zu der die Datei erstellt oder geändert wurde), nicht unbedingt die Reihenfolge wieder, in der die Nachrichten empfangen wurden.In this case, for files written by the adapter, file system properties relating to chronology (for example, file creation time or modification time) do not necessarily reflect the message arrival sequence.

Auswirkungen der geordneten Übermittlung auf die LeistungPerformance Impact of Ordered Delivery

Hinweis

Ab BizTalk Server 2020 können bei dynamischen Sendeports mit geordneter Übermittlung, bei denen die Reihenfolge nicht über verschiedene ausgehende Standorte hinweg verwaltet werden muss, ein höherer Durchsatz erreicht werden, indem mehrere Sende Port Instanzen verwendet werden, um Nachrichten zu verarbeiten, die parallel an verschiedene ausgehende Standorte gesendet werden.Starting with BizTalk Server 2020, for dynamic send ports with ordered delivery where order doesn't need to be maintained across different outbound locations, higher throughput can be achieved by using multiple send port instances to process messages sent to different outbound locations in parallel.

Um Nachrichten geordnet übermitteln zu können, muss BizTalk Server die Verarbeitung von geordneten Nachrichten an verschiedenen Stellen auf dem Weg serialisieren, den Nachrichten durchlaufen.To achieve ordered delivery, BizTalk Server must serialize processing of ordered messages at various points along the message pathway. Dies wirkt den Techniken der dezentralen Skalierung entgegen, z. B. der Verwendung mehrerer Hostinstanzen für die parallele Verarbeitung von Nachrichten.This works against scale-out techniques, such as the use of multiple host instances for parallel processing of messages. Wenn die geordnete Übermittlung verwendet wird, können selbst Ports, die für die Ausführung mehrerer Hostinstanzen konfiguriert sind, auf nur einer Hostinstanz ausgeführt werden, um die geordnete Übermittlung sicherzustellen.When using ordered delivery, even ports configured to run on multiple host instances run only on a single host instance to ensure ordered delivery. In diesem Fall bleibt jedoch die Hochverfügbarkeit erhalten, da bei einem Fehler bei einer Hostinstanz, die geordnete Nachrichten verarbeitet, die Nachricht, bei der ein Fehler aufgetreten ist, auf einer anderen verfügbaren Hostinstanz erneut verarbeitet wird.However, in this situation, high availability is still maintained because the failure of a host instance that is processing ordered delivery of messages results in reprocessing of the failed message on another available host instance.

Wenn geordnete Übermittlung aktiviert ist, beträgt das Standard Wiederholungsintervall 5 Minuten.When Ordered Delivery is enabled, the default Retry Interval is 5 minutes. Legen Sie zum Optimieren der Leistung das Wiederholungsintervall auf den niedrigsten Wert (1 Minute) fest.To improve performance, set the Retry Interval to the lowest value, which is 1 minute. Die Eigenschaft für das Wiederholungsintervall kann einen Wert von NULL (0) annehmen, aber 0 (null) ist ungültig.The Retry Interval property may accept a value of zero (0) but zero (0) is not valid. Die Wiederholungs Anzahl kann auch auf die Anzahl der benötigten Wiederholungen abgestimmt werden.The Retry Count can also be tuned to the number of retries needed. Wenn Sie z. B. wissen, dass die Anforderung in <1 Minute verarbeitet werden soll und auf das Sendeportziel immer zugegriffen werden kann, legen Sie beide Werte auf 1 fest.For example, if you know the request should process in <1 minute and the send port destination is always accessible, set both values to 1.

Weitere Informationen zum Ändern der Wiederholungswerte finden Sie unter Vorgehens Weise beim Konfigurieren der erweiterten Transport Optionen für einen Sendeport.To change the Retry values, go to How to Configure Transport Advanced Options for a Send Port.

Weitere Informationen zur geordneten Übermittlung finden Sie in den folgenden Themen:For additional information on Ordered Delivery, refer to the following:

BizTalk: durchgängige Nachrichten Verarbeitungsoptionen für die NachrichtenverarbeitungBizTalk: End-to-End Ordered Message Processing Options

BizTalk: geordnete ÜbermittlungBizTalk: Ordered Delivery

Weitere InformationenSee Also

Geordnete Übermittlung von Nachrichten mit dem MSMQ-AdapterOrdered Delivery of Messages with the MSMQ Adapter
Geordnete Übermittlung von Nachrichten mit dem MQSeries-AdapterOrdered Delivery of Messages with the MQSeries Adapter