Mysap findet den Host über Umwege

05.07.2006
Von Thorsten Fink und Ralf Kempf

Es ist jedoch ein Problem, Systeme zuverlässig über ein nachrichtenbasierendes Verfahren zu koppeln, insbesondere angesichts von Fehlern in der Programmlogik. Angenommen, beim Empfänger führt die Verarbeitung einer Nachricht zu einem internen Fehler. Wie kann dann der Sender davon in Kenntnis gesetzt werden, und was kann er tun, um wieder einen konsistenten Zustand zu erzeugen? Sender und Empfänger arbeiten in getrennten Transaktionen: Kann das System die Sendertransaktion nicht abschließen, wird die Nachricht gelöscht, ohne je wirklich verschickt worden zu sein. Das Verschicken geschieht erst beim erfolgreichen Transaktionsabschluss. Kommt es in der Empfängertransaktion zu Problemen, wird diese zurückgerollt (Rollback) und die Nachricht erneut verschickt. Dieses Zurückrollen hat aber keinen Einfluss auf die Sendertransaktion, die zu diesem Zeitpunkt schon abgeschlossen ist.

Pannen bei der Übertragung

Treten bei der Übertragung von Nachrichten Störungen auf, erhält im Allgemeinen ein Administrator eine Mitteilung und behandelt das Problem. Wird eine Nachricht aufgrund logischer Fehler vom Empfän- ger nicht bearbeitet, fällt dies möglicherweise erst sehr spät auf, beispielsweise durch eine Rückmeldung vom Kunden. Selbst wenn das Problem iden- tifiziert wurde, kann seine Be- hebung problematisch sein, wenn die Senderapplikation nicht über geeignete Funktio- nen verfügt. Ein weiteres Problem taucht beim Ausfall der beteiligten Systeme auf. Wenn sowohl Sender- und Empfangsapplikationen als auch der Nachrichtendienst versagen, kann die Wiederherstellung eines konsistenten Systemzustands (Desaster Recovery) äußerst aufwändig sein.

Trotz der Kritik sind die hier gezeigten Lösungsansätze ausgereift und nach Einarbeitung auch ohne größere Überraschungen nutzbar. Die Projekterfahrung zeigt, dass Probleme bei diesen Verfahren selten technischer, sondern meistens fachlicher Art sind. Beispielsweise verhalten sich SAP-Funktionsbausteine manchmal nicht so wie erwartet und machen eine Begutachtung des Quellcodes (Code-Review) erforderlich.