Freigeben über


Vermeiden von Einschränkungen für korrelierte Nachrichten

Nachrichten, die in BizTalk Server in Warteschlangen eingereiht werden, z. B. über einen Empfangsspeicherort oder über Orchestrierungen, werden auf eine der folgenden Arten verarbeitet:

  • Sie können neue Instanzen von Abonnenten (Orchestrierungen oder Sendeports) aktivieren.

  • Sie können über eine Korrelation an eine vorhandene Abonnenteninstanz weitergeleitet werden. Weitere Informationen zur Korrelation finden Sie unter Verwenden von Korrelationen in Orchestrierungen.

    Viele Entwickler verwenden Empfangsspeicherorte als Lösung für den Empfang von Aktivierungs- und korrelierten Nachrichten über den gleichen Port. Dies minimiert die Anzahl der Adressen, die die Absender von Nachrichten überprüfen müssen. Bei der Drosselung in BizTalk Server kann es jedoch Vorteile haben, den Stream von Aktivierungsnachrichten und den Datenstrom korrelierter Nachrichten separat zu betrachten, wenn es um die Drosselung geht.

    Wenn aktivierende und korrelierte Nachrichten am gleichen Empfangsspeicherort ankommen, werden sie mit dem gleichen Einschränkungsstatus behandelt, da die Einschränkung auf Hostebenen angewendet wird. Dies führt dazu, dass alle im Empfangsspeicherort des Hosts eingehenden Nachrichten als Einheit eingeschränkt werden. Das ist in vielen Szenarien kein Problem, in bestimmten Fällen kann das gemeinsame Einschränken von Korrelationen und Aktivierungen jedoch zu einer Art Systemsperre führen.

Beispiel

Beispielszenario: Eine Orchestrierung empfängt eine Aktivierung und verwendet diese zum Initialisieren eines Korrelationssatzes. Danach wird ein Konvoi von zehn weiteren Nachrichten empfangen. Angenommen, beim Empfang der Aktivierungen und Korrelationen wird unter Last im Spool ein Rückstand aufgebaut. Dies führt zu einer Einschränkung der Nachrichtenanzahl, die empfangen werden können. Da das gemeinsame Einschränken von aktivierenden und korrelierten Nachrichten das Verarbeiten von Orchestrierungen verlangsamt, erhöht sich der Rückstau und es kommt zu weiteren Einschränkungen. Wenn dieser Ablauf fortgesetzt wird, führt dies zu einer Einschränkung des Systems mit einem Durchsatz nahe Null.

Durch eine Trennung des Empfangsspeicherorts in einen Empfangsspeicherort für Aktivierungen und einen Empfangsspeicherort für Korrelationen sowie durch die Konfiguration der Speicherorte in separaten Hosts kann der Einschränkungsschwellenwert der Datenbankgröße für Aktivierungen geringer gehalten werden als der für Korrelationen. Dies reduziert den Gesamtrückstau und hält den Nachrichtenfluss aufrecht.

Möglicherweise fragen Sie sich also: "Warum kann ich nicht einfach den Schwellenwert für die Datenbankgröße für meinen einzelnen Empfangsspeicherort erhöhen, um das Problem zu beheben?" Die Antwort lautet, Sie können, aber es führt nicht immer zu dem gewünschten Verhalten. Einschränkungen dienen hauptsächlich dem Schutz des Systems vor Überlastung. Wenn Sie den Schwellenwert sehr stark erhöhen oder vollständig deaktivieren, schalten Sie diesen Schutz aus.

Empfehlung

Es wird empfohlen, bei Szenarien wie dem oben beschriebenen, für die das Einschränken von korrelierten Nachrichten wichtig ist, getrennte Empfangsspeicherorte in separaten Hosts einzurichten, die unabhängig voneinander eingeschränkt werden können.

Wenn für Empfangsspeicherorte separate Hosts konfiguriert werden, sollte der Einschränkungsschwellenwert der Datenbankgröße für den Host, der für Empfangsspeicherorte verwendet wird, auf einen niedrigeren Wert festgelegt werden als der Einschränkungsschwellenwert der Datenbankgröße für Hosts, die für Orchestrierungen und Korrelationen verwendet werden.

Wenn Sie wissen, dass die Last nie höher ist als der maximale dauerhafte Durchsatz (MST) des Systems, oder dass die Durchsatzspitzen zwischen den Spitzen ausgeglichen werden, wird das Erhöhen des Einschränkungsschwellenwerts ebenfalls funktionieren. Möglicherweise wird jedoch kein so dauerhaft hoher Durchsatz gewährleistet wie mit separaten Hosts für Aktivierungen und Korrelationen.