Sie können die Anzahl der Empfangsprogramme auf dem Adapter sowie die Anzahl der zusätzlichen Instanzen
im Nachrichtenfluss entsprechend konfigurieren, dass Verzögerungen bei der Verarbeitung synchroner Aufrufe von SAP vermieden werden, und so die Leistung verbessern.
Der SAP-Eingangsadapter empfängt synchrone Aufrufe von SAP. Über die
Adaptereigenschaft mit dem Namen Number of
listeners (Anzahl der Listener) wird die Anzahl an Threads eingestellt, die den
Adapter auf den Eingang der SAP-Programm-ID überwachen, um so die maximale Anzahl
gleichzeitiger Aufrufe zu steuern. Die Empfangsprogramme senden die Eingangsparameter dieser Aufrufe zur Verarbeitung an den
SAPInput-Knoten, und die Ausgangsparameter
werden an den SAPReply-Knoten gesendet.
Erhält das Empfangsprogramm einen Aufruf von SAP, wird die Verarbeitung blockiert, bis eine Nachrichtenflussinstanz mit dem
SAPInput-Knoten verfügbar ist.
Wenn eine Nachrichtenflussinstanz verfügbar geworden ist und mit der Verarbeitung der
Importparameter begonnen hat, blockiert das Empfangsprogramm erneut die Verarbeitung, bis
eine Nachricht, die die Exportparameter enthält, an den
SAPReply-Knoten weitergegeben wird.
Die Zeitdauer zwischen dem Senden der Nachricht durch den SAPInput-Knoten und dem Empfang der Antwortnachricht durch den SAPReply-Knoten kann durch die Eigenschaft für zusätzliche Instanzen im Nachrichtenfluss beeinflusst werden. Um Verzögerungen bei der Verarbeitung zu vermeiden,
muss die maximale Anzahl der Empfangsprogramme und die Anzahl zusätzlicher Instanzen des
Nachrichtenflusses, der den SAPInput- und
den SAPReply-Knoten enthält, optimiert werden. Die Anzahl zusätzlicher Instanzen kann auf Nachrichtenflussebene oder auf dem SAPInput-Knoten selbst konfiguriert werden.
Einschränkungen
Die Anzahl der Empfangsprogramme (Listeners)
ist durch die SAP-Konfiguration begrenzt. In der SAP-Transaktion SMQS können Sie für
jedes RFC-Ziel die Eigenschaft für die maximale Verbindungsanzahl anzeigen und ändern.
Wenn die konfigurierte Anzahl der Empfangsprogramme größer ist als die maximale
Anzahl der Verbindungen, hat dies keine Auswirkungen.
Für jede zusätzliche
Instanz des Nachrichtenflusses werden in Abhängigkeit von den im Nachrichtenfluss
enthaltenen Knotentypen zusätzliche Ressourcen von jedem Knoten verwendet.
Szenarios
Im folgenden Diagramm ist ein grundlegendes Szenario
dargestellt, bei dem die Anzahl der Empfangsprogramme gleich der Anzahl der zusätzlichen
Instanzen des Nachrichtenflusses ist. In diesem Beispiel wurden drei Empfangsprogramme
und drei Nachrichtenflussinstanzen konfiguriert.
- SAP gibt drei Aufrufe aus, wobei jeder Aufruf von einem anderen Empfangsprogramm
empfangen wird.
- Jedes Empfangsprogramm sendet die Eingangsparameter des jeweiligen Aufrufs an den
SAPInput-Knoten in einer der drei
Nachrichtenflussinstanzen.
- Jede Nachrichtenflussinstanz sendet ihre Nachricht an die Zielanwendung.
- Die Zielanwendung verarbeitet die Nachrichten und sendet Ihre Antworten an die
Nachrichtenflussinstanzen.
- Der SAPReply-Knoten in der jeweiligen Nachrichtenflussinstanz sendet die Antwortnachricht an das Empfangsprogramm, welches den ursprünglichen Aufruf empfangen hat.
- Jedes Empfangsprogramm gibt die Antwortnachricht an das jeweilige SAP-Programm
zurück.
Der
SAPReply-Knoten
kann sich in demselben Nachrichtenfluss wie der
SAPInput-Knoten befinden, wie im vorherigen
Diagramm dargestellt. Im folgenden Szenario befindet sich der
SAPReply-Knoten jedoch in einem anderen
Nachrichtenfluss als der
SAPInput-Knoten.
Der
SAPReply-Knoten muss in derselben
Ausführungsgruppe implementiert sein wie der
SAPInput-Knoten.
- SAP gibt drei Aufrufe aus, die jeweils von einem anderen Empfangsprogramm empfangen werden.
- Jedes Empfangsprogramm sendet die Eingangsparameter des jeweiligen Aufrufs an einen
Nachrichtenfluss, der einen SAPInput-Knoten
enthält.
- Der Nachrichtenfluss reiht die Nachricht in eine Warteschlange für die Zielanwendung
ein.
- Die Zielanwendung empfängt die Nachrichten aus der Warteschlange und verarbeitet
sie.
- Die Zielanwendung reiht die Nachrichten in eine Warteschlange ein.
- Ein zweiter Nachrichtenfluss, der einen
SAPReply-Knoten enthält, ruft die Nachrichten
aus der Warteschlange ab und verarbeitet sie.
- Der SAPReply-Knoten sendet die
Antwortnachrichten an die entsprechenden Empfangsprogramme.
- Jedes Empfangsprogramm gibt eine Antwortnachricht an das jeweilige SAP-Programm
zurück.
In diesem Szenario hat der Nachrichtenfluss eine geringe Latenzzeit
verglichen mit der Zeit, die das gesamte Szenario erfordert. Daher können Sie die
Ressourcen begrenzen, die vom Nachrichtenfluss, der den
SAPInput-Knoten enthält, verwendet werden,
indem Sie weniger zusätzliche Instanzen dieses Nachrichtenflusses konfigurieren. Wie in dem Beispiel dargestellt kann eine Nachrichtenflussinstanz
viele Empfangsprogramme mit Daten versorgen, da die Importparameter vom Nachrichtenfluss schnell zur Verarbeitung weitergegeben werden.
Auch die folgenden Szenarios sind möglich.
- Ein einzelner Nachrichtenfluss enthält einen
SAPReply-Knoten, dient jedoch zum Senden von
Antworten an mehrere SAPInput-Knoten.
Nachdem die Nachricht an den SAPReply-Knoten
weitergegeben wurde, sendet das Empfangsprogramm die Antwort zurück an SAP und ist
deshalb bereit, einen weiteren Aufruf von SAP zu empfangen. Die aktuelle Instanz
des Nachrichtenflusses ist jedoch noch mit der Verarbeitung der Knoten ausgelastet, die
dem SAPReply-Knoten nachgeschaltet sind. In
diesem Fall sollte die Anzahl der Instanzen des Nachrichtenflusses, der den
SAPReply-Knoten enthält, erhöht werden.
- Nach der Weitergabe an den SAPReply-Knoten
führen andere Knoten im Nachrichtenfluss zusätzliche Verarbeitungsschritte aus. In diesem
Fall sollte die Anzahl der Instanzen dieses Nachrichtenflusses, der den
SAPReply-Knoten enthält, erhöht werden, auch
wenn es derselbe Nachrichtenfluss ist, der den
SAPInput-Knoten enthält.
Dieses Szenario
kann unerwünschte Auswirkungen auf die Integrität Ihrer Daten haben. Falls es nach dem
SAPReply-Knoten zu einer Ausnahme kommt, wird für vom Nachrichtenfluss aktualisierte Ressourcen (z. B. Datenbanktabellen oder WebSphere MQ-Warteschlangen) möglicherweise eine Rollback-Operation durchgeführt.
Für die Antwort, die bereits zurück an SAP gesendet wurde, kann jedoch keine
ROLLBACK-Operation mehr ausgeführt werden. Wenn dieses Verhalten nicht erwünscht ist,
können Sie die Datenintegrität dadurch verbessern, dass Sie sicherstellen, dass der
SAPReply-Knoten die letzte Position im
Nachrichtenfluss einnimmt.
Weitere Informationen zur Optimierung des
SAP-Adapters finden Sie im Abschnitt Skalierbarkeit und Leistung von SAP-Adaptern optimieren.