Camunda Job Executor vs External Task — Comparaison Complète & Bonnes Pratiques
Une question très fréquente chez les développeurs Camunda :
Faut-il utiliser Java Delegate (Job Executor) ou External Task (Worker) ?
Les deux exécutent des Service Tasks…
Mais leur architecture et leur comportement en production sont totalement différents.
Un mauvais choix peut provoquer :
threads bloqués
timeouts
incidents moteur
impossibilité de scaler
Différence Conceptuelle
| Caractéristique | Job Executor | External Task |
|---|---|---|
| Exécution | Dans le moteur | Hors moteur |
| Langage | Java uniquement | Multi-langage |
| Scalabilité | Limitée | Très élevée |
| Gestion d’erreur | Incident | Retry |
| Microservices | ❌ | ✔ |
1) Job Executor (Java Delegate)
Le moteur exécute le code dans son propre pool de threads.
Exemple
public class PaymentDelegate implements JavaDelegate {
public void execute(DelegateExecution execution) {
paymentService.charge();
}
}
Avantages
✔ Simple
✔ Rapide
✔ Idéal pour accès base de données
Problèmes en production
❌ API longues bloquent le moteur
❌ Crash moteur = jobs perdus
❌ Scalabilité difficile
2) External Task (Worker)
Le moteur crée une tâche.
Un worker externe l’exécute.
Exemple
client.subscribe("charge-payment")
.handler((task, service) -> {
paymentService.charge();
service.complete(task);
});
Avantages
✔ Microservices ready
✔ Retry automatique
✔ Scalabilité horizontale
✔ Multi-langage
Inconvénient
Un peu plus lent qu’un delegate local.
Comportement en cas d’échec (Différence Critique)
| Situation | Job Executor | External Task |
|---|---|---|
| Timeout API | Incident | Retry |
| Worker crash | Bloqué | Repris |
| Restart moteur | Perdu | Sécurisé |
| Réseau instable | Incident | Récupérable |
Quand utiliser quoi
Utiliser Job Executor si
logique interne
opérations rapides
accès base locale
Utiliser External Task si
API REST
paiement
email / SMS
IA
microservices
Recommandation d’Architecture
Moteur BPMN = Orchestrateur
Workers = Logique métier
Ne jamais mettre une logique lourde dans le moteur.
Erreur fréquente en production
Appeler une API REST dans un JavaDelegate
Résultat → blocage du Job Executor
Toujours utiliser External Task pour les IO.
📚 Lectures recommandées
Pour améliorer la stabilité de vos workflows :
👉 https://shikhanirankari.blogspot.com/search/label/French
Articles utiles :
Ces sujets impactent directement le choix du mode d’exécution.
Conseil Final
Job Executor = Automatisation embarquée
External Task = Automatisation distribuée
Les architectures modernes privilégient External Task.
💼 Support professionnel disponible
Si vous rencontrez des problèmes sur des projets réels liés au développement backend d’entreprise ou à l’automatisation des workflows, je propose des services de conseil payants, de débogage en production, de support projet et de formations ciblées.
Les technologies couvertes incluent Java, Spring Boot, PL/SQL, Azure, CMS, ainsi que l’automatisation des workflows (jBPM, Camunda BPM, RHPAM, Flowable), DMN/Drools.
📧 Contact: ishikhanirankari@gmail.com | info@realtechnologiesindia.com
🌐 Website: IT Trainings | Digital lectern | Digital rostrum | Digital metal podium
Si vous rencontrez des problèmes sur des projets réels liés au développement backend d’entreprise ou à l’automatisation des workflows, je propose des services de conseil payants, de débogage en production, de support projet et de formations ciblées.
Les technologies couvertes incluent Java, Spring Boot, PL/SQL, Azure, CMS, ainsi que l’automatisation des workflows (jBPM, Camunda BPM, RHPAM, Flowable), DMN/Drools.
📧 Contact: ishikhanirankari@gmail.com | info@realtechnologiesindia.com
🌐 Website: IT Trainings | Digital lectern | Digital rostrum | Digital metal podium
Comments
Post a Comment