Comment sont gérés les Jobs via Talend Administration Center ?
La page Job Conductor de Talend Administration Center est simple d'utilisation et performante : elle vous permet de planifier des Jobs avec des déclencheurs Cron simples ou plus complexes ou avec des déclencheurs fichiers. Vous pouvez également lancer manuellement des Jobs depuis le navigateur. Excepté pour le déclencheur fichier, le Job s'exécute toujours à un moment pré-déterminé ou avec l'intervention explicite d'une personne. Pour utiliser des déclencheurs fichiers comme mécanisme de communication inter-processus, il peut vous être demandé de disposer de droits d'accès qui ne sont pas autorisés dans un environnement sécurisé. C'est pour cette raison qu'il est préférable de faire appel à un Job Talend via une vraie API.
Les Jobs peuvent être également paramétrés avec des variables de contextes. Les variables de contextes peuvent être écrasées par des administrateurs système sur la page Job Conductor pour plus de flexibilité. Mais lors de l'exécution du Job, celui-ci s'exécute toujours avec le même jeu de variables de contextes pré-configurées. Les variables de contextes, celles par défaut ou les valeurs écrasées, ne peuvent être modifiées sans intervention humaine. Il est préférable de pouvoir passer des paramètres via une API.
Il existe une option qui permet de construire des Jobs en tant que fichiers autonomes .zip. Les archives générées incluent des scripts d'exécution et tous les fichiers .jar nécessaires. Cependant, les Jobs qui en résultent s'exécutent en isolation et manquent de fonctions de monitoring, de gestion et de contrôle fournies par Talend Administration Center. Aucun mécanisme de connexion centralisé n'est fourni et il n'existe aucun concept de serveurs de Jobs ou de grille de Jobs. À la place, ces responsabilités incombent au développeur. Comme les solutions individuelles se multiplient, la gestion du système élargi est plus difficile et la maintenance devient plus pesante.
Ainsi, alors que les Jobs exportés fournissent plus de flexibilité, il est de plus en plus difficile de pouvoir les gérer. L'API de Talend Administration Center propose une alternative très simple d'utilisation et performante.
API de la MetaServlet de Talend Administration Center
API de la MetaServlet
Toutes les opérations de la MetaServlet sont invoquées via une requête GET HTTP. Tous les paramètres de l'opération sont encodés en tant que seul paramètre sans nom, encodé en base-64 pour la requête GET.
L'invite de commande de la MetaServlet de Talend Administration Center est disponible dans le dossier suivant du répertoire d'installation de Talend Administration Center :
<tomcat_path>/webapps/org.talend.administrator/WEB-INF/classes/MetaServletCaller.bat sous Windows
<tomcat_path>/webapps/org.talend.administrator/WEB-INF/classes/MetaServletCaller.sh sous Linux
<tomcat_path>\webapps\tac\WEB-INF\classes>MetaServletCaller.bat
usage: Missing required option: url
-f,--format-output format Json output
-h,--help print this help message
-json,--json-params <arg> Required params in a Json object
-url,--tac-url <arg> TAC's http url
-v,--verbose display more informations
--tac-url
Pour obtenir l'intégralité du message d'aide, le service Talend Administration Center doit être
opérationnel et vous devez transmettre le paramètre --tac-url
.
--help all, -h all
--help all
pour afficher l'intégralité de
l'aide et le paramètre -h all
pour une version abrégée. Les
exemples ci-dessous capturent la sortie dans un fichier texte pour référence
ultérieure.<tomcat_path>\webapps\org.talend.administrator\WEB-INF\classes>MetaServletCaller.bat
--tac-url=http://localhost:8080/org.talend.administrator/ -help all > tac-help.txt
<tomcat_path>\webapps\org.talend.administrator\WEB-INF\classes>MetaServletCaller.bat
--tac-url=http://localhost:8080/org.talend.administrator/ -h > tac-help-short.txt
runTask
Exécute une tâche en fonction de son ID.
<tomcat_path>\webapps\org.talend.administrator\WEB-INF\classes>MetaServletCaller.bat
--tac-url=http://localhost:8080/org.talend.administrator/ -help runTask
----------------------------------------------------------
Command: runTask
----------------------------------------------------------
Description : Allows to run a task defined in Job conductor by its id.
Mode can be 'asynchronous' or 'synchronous'
Requires authentication : true
Since : 4.2
Sample :
{
"actionName": "runTask",
"authPass": "admin",
"authUser": "admin@company.com",
"jvmParams": [
"-Xmx256m",
"-Xms64m"
],
"mode": "synchronous",
"taskId": 1
}
Pour exécuter une tâche, vous devez connaître sa valeur de taskId
générée par le système. Cette information peut être récupérée en exécutant la
commande getTaskIdByName
.
getTaskIdByName
taskName
.<tomcat_path>\webapps\org.talend.administrator\WEB-INF\classes>MetaServletCaller.bat --tac
-url=http://localhost:8080/org.talend.administrator/ -help getTaskIdByName
----------------------------------------------------------
Command: getTaskIdByName
----------------------------------------------------------
Description : Get task id by given taskName
Requires authentication : true
Since : 5.1
Sample :
{
"actionName": "getTaskIdByName",
"authPass": "admin",
"authUser": "admin@company.com",
"taskName": "task1"
}
Appel de l'API de Talend Administration Center de manière interactive
Procédure
Appel de l'API de Talend Administration Center du code
Avant de commencer
Pour invoquer l'API de Talend Administration Center, les objets JSON doivent être encodés en base-64.
Procédure
Problèmes connus
- Le résultat retourné par la commande
getTaskIdByName
n'est pas un format JSON correct. Il n'y a pas de guillemets autour du champ nommé task Id. Vous devez utiliser une expression régulière pour le remplacer avant d'analyser le JSON. Consultez TDI-32706 (en anglais). - La commande
runTask
ne documente pas l'argument de contexte mais elle le supporte. Consultez TDI-32519 (en anglais). - La commande
runTask
supporte l'argument de contexte, mais l'API de la Metaservlet ne le parse pas correctement s'il est le dernier argument du payload JSON soumis. Pour plus d'informations, consultez TDI-32380 (en anglais). Comme solution alternative, assurez-vous que la variable de contextes n'est pas le dernier argument (elle peut être transmise en deuxième au dernier argument par exemple).