Wave me: thomasfriebel @ googlewave . com
tServerAlive: Lebt denn der Server noch?
Beim Design von Datenintegrationsprozessen macht man sich oftmals viele Gedanken im Vorfeld. So werden Schwächen in der Datenqualität meist schon vorab ermittelt (z.B. mit Talend Open Profiler) und dann im ETL-Prozess eine entsprechende Optimierung umgesetzt.
Auch zur Laufzeit auftretende Fehler, wie der Klassiker, die NullPointer-Exception werden bereits berücksichtigt und z.B. mit tSchemaComplianceCheck verhindert. Aber eine Prüfung auf Verfügbarkeit eines entfernten Rechners (z.B. dem Datenbank- oder dem FTP-Server) wird eher selten explizit vorgenommen. Meistens laufen die entsprechenden Komponenten dann eben in eine entsprechende Exception und der Prozess wird (durchaus auch kontrolliert) beendet.
Dumm nur, wenn bis dahin schon andere System angezapft oder z.B. temporäre Dateien angelegt wurden. Viel Aufwand, der letztlich umsonst war und u.U. aber entsprechende Last verursacht hat.
Mit tServerAlive hat man die Chance, diese unnötige Last zu vermeiden. tServerAlive befindet sich in der Komponenten-Palette im Bereich Misc bzw. Verschiedenes. Die Komponente tServerAlive pingt ein entferntes System entweder über das Ping- oder das Telnet-Protokoll an.
Erhält tServerAlive im definierten Zeitraum (siehe das Feld Timeout) keine entsprechende Antwort vom Zielsystem, so ist das Ergebnis des Aufrufs false und wird in der globalMap abgelegt. Antwortet der angepingte Rechner hingegen, so schreibt tServerAlive true in die globalMap (z.B. tServerAlive_1_SERVER_ALIVE_RESULT).
Der Zugriff auf das Ergebnis erfolgt dann einfach via ((Boolean)globalMap.get(“tServerAlive_1_SERVER_ALIVE_RESULT”)).
Dieses Szenario pingt meinen Server an. Das Ergebnis des Ping-Versuchs wird mit Hilfe von tFixedFlowInput in einen künstlich generierten Datensatz übertragen.
Hier sieht man den vollständigen Zugriff auf das Ergebnis, in Form eines Boolean-Objekts (true/false), aus der globalMap.
Dieser Datensatz wird anschließend mit tLogRow auf die Konsole ausgegeben. Wie dieser Output dann aussieht, zeigt das Bild links.
Somit hat man ein einfaches Instrument an der Hand, um sicherzustellen, das entfernte Systeme, auf welche man in seinen ETL-Jobs zugreifen möchte, auch wirklich verfügbar sind.
Oder man programmiert sich mit tServerAlive und einer tInfiniteLoop einen Wächter, der einfach in regelmäßigen Intervallen prüft, ob noch alle Systeme laufen und ggfs. eine Status-EMail verschickt.
Possibly related posts: (automatically generated)
- Related posts on komponente
- Wir haben das Rauchverbot gelockert, so please stop smoking …
- In Israel wurde der Raketenabwehrschild der NATO geschmiedet und …
- Social Media – Spiegel der Gesellschaft « Totterturm
| Artikel drucken | Dieser Beitrag wurde von Thomas am 16.11.2009 um 19:38 veröffentlicht und unter Programmierung, Talends Software, Tutorial abgelegt. Du kannst allen Antworten zu diesem Beitrag durch RSS 2.0 folgen. Du kannst eine Antwort schreiben oder einen Trackback von deiner eigenen Seite hinterlassen. |

vor 5 Monaten
Hi,
ich bin neu mit TOS, habe scheinbar ein Layer8-Problem..
Können Sie mit ggf. den Job zum Pingtest mal zuschicken.
Ich bekomme ihn nicht nachgebaut. … hab leider als Language Deutsch und finde “globalmap” nicht.
Job bringt bei mir nur Fehler…
VIelen Dank!!
vor 5 Monaten
Hallo Erich,
nein, leider kann ich den Job nicht zu schicken, da ich ihn nicht mehr habe.
Aber vielleicht kann ich auch so helfen.
Die globalMap ist eine Hash-List, die in jedem Talend-Job global zur Verfügung steht, um dort beliebige Objekte unter einem beliebigen Namen ablegen zu können. Dies geschieht mit globalMap.put(“name”, meinObjekt) . Mit globalMap.get(“name”) kann man dann wieder darauf zugreifen. Alle Talend-Komponenten benutzen diese globalMap ebenfalls, um dort Informationen bereitzustellen. So auch tServerAlive.
Die Sprache spielt dabei übrigens keine Rolle und lässt sich im Menü unter “Benutzervorgaben” auch jederzeit umstellen.
Ich hoffe, ich konnte auf diesem Wege helfen.