Phase 6: Antwortwege (Performance)

Hier lässt sich an der Performance nicht allzu viel drehen. Ein schnelleres Netz, schnellere Platten, usw. wurden ja eingangs schon erwähnt. Lediglich bei Antwortwegen vom Typ "Message", bei dem ein Profil ein weiteres aufruft, können Sie ein paar Einstellungen machen, die sich auf die Performance auswirken: Als es um den Speicher ging, erfolgte der Rat, die Checkbox Daten via Datei übergeben zu setzen. Das ist wesentlich speicherschonender, aber natürlich kostet es etwas Zeit, wenn erst eine Datei geschrieben und dann vom nächsten Profil wieder gelesen wird. Solange es sich um kleine Datenmengen handelt, zum Beispiel ein paar hundert Zeilen CSV, ist es einfach effizienter, diese Daten im Speicher direkt zu übergeben. Am besten geben Sie Ihre Daten mal in eine Datei aus und schauen wie groß die wird. Wenn das nur im zweistelligen Kilobyte-Bereich liegt, sparen Sie sich den Umweg über die Datei einfach.

Nicht direkt Performance im Sinne gesparter Prozessorzeit ergibt die Benutzung asynchroner oder persistenter Messages. Nutzen Sie synchrone Messages, muss das aufrufende Profil warten, bis es eine Antwort vom aufgerufenen Profil erhält. Erst dann können weitere Antwortwege beschritten oder das Profil erfolgreich beendet werden. Auf asynchrone (und somit auch persistente) Messages dagegen wird nicht gewartet, die werden abgefeuert und danach geht es sofort weiter. Persistente Messages sind übrigens im Allgemeinen zu bevorzugen, da sie etwas sicherer als rein asynchrone Messages sind. Dadurch ist das erste Profil schneller fertig, und das aufgerufene Profil muss auch nicht bevorzugt behandelt werden, sondern kann ganz normal in die Warteschlange gestellt werden. Wie gesagt: Das spart nicht wirklich Prozessorzeit, aber der "gefühlte" Durchsatz kann besser sein, da der Thread des aufrufenden Profils sofort wieder für ein weiteres Profil freigemacht werden kann.

Allerdings sollen die Nachteile nicht verschwiegen werden. Das aufrufende Profil erfährt nicht, wenn das aufgerufene fehlschlägt. Es können also auch keine weiteren Antwortwege abhängig von diesem gemacht werden, denn der wird immer als erfolgreich gewertet. Sollte es nun auch noch - was ja hoffentlich nie eintritt - ein schweres Problem mit Hardware oder Betriebssystem geben, bevor für das aufgerufene Profil einen Job mit den Daten erzeugt werden konnte, steht das erste Profil als erfolgreich abgeschlossen in den Logs, das zweite erscheint dagegen nirgends als unvollständig oder fehlerhaft. Bei synchronen Messages sähe man zumindest, dass das erste Profil seine Arbeit schon nicht abschließen konnte und kann entsprechend reagieren. Überlegen Sie sich also, ob Sie in der jeweiligen Situation tatsächlich mit asynchronen bzw. persistenten Messages arbeiten wollen oder doch lieber die Sicherheit der synchronen Message vorziehen.

Nebenbei: Für Profile, die auf eine synchrone Message reagieren sollen, wird immer sofort ein Thread dafür erstellt. Sie können also im Umkehrschluss so auch erzwingen, dass eben dieses Profil sofort, ohne Wartezeit, in Angriff genommen wird.

Hinweis: Siehe auch Abschnitte Zustände von Antwortwegen und Abhängigkeiten zwischen Antwortwegen.