Dans le projet actuel, nous devons effectuer des calculs assez compliqués sur les données exportées de notre système. Les calculs sont gérés par un logiciel tiers (qui est essentiellement une boîte noire pour nous). Nous avons ce logiciel en tant que binaires Linux ou Windows, et nous savons comment l'exécuter avec nos données dans la ligne de commande.Apache Camel peut-il s'intégrer à une application de traitement de travaux propriétaire?
Le traitement d'un seul ensemble de données sur un cœur de processeur dure environ 200 heures. Cependant, nous pouvons diviser l'ensemble de données en ensemble de données plus petit (structurellement équivalent) et exécuter des calculs en parallèle. Plus tard, nous pouvons facilement agréger les résultats. Notre but est de pouvoir traiter chaque ensemble de données de moins de 10 heures.
Notre client dispose d'une application propriétaire de traitement des travaux. L'interface est basée sur le système de fichiers: nous copions le fichier EXE du travail (yep, c'est Windows) et le fichier INI de configuration dans le dossier entrant, l'application de traitement des travaux exécute ce travail sur l'un des nœuds (gestion des erreurs, basculement, etc. .) et enfin copie les résultats dans le dossier sortant. Ce système de traitement de travaux propriétaire a plusieurs centaines de cœurs de processeur, il y a donc assez de puissance pour gérer notre ensemble de données de moins de 10 heures. Même moins de 30 minutes.
Maintenant, la chose est, notre application est basée sur J2EE, plus ou moins l'application JBoss standard. Et nous devons:
- intègrent à un système de traitement de file d'attente travail comme propriétaire et
- split/agréger nos ensembles de données de manière fiable.
Pour moi, beaucoup de choses que nous devons faire ressemblent beaucoup à Enterprise Application Intergation Patterns comme Splitter et Aggregator. Donc, je pensais si Apache Camel serait un bon moyen pour la mise en œuvre:
- Nous allons construire nos emplois (+ EXE + INI) jeu de données sous forme de messages. Un séparateur diviserait les messages de travaux importants en plus petits en divisant l'ensemble de données en plusieurs jeux de données plus petits.
- Nous aurons probablement besoin de mettre en œuvre nos propres canaux de messagerie pour écrire des messages dans le répertoire entrant ou lire des messages à partir du répertoire sortant du système de traitement de travaux propriétaire.
- Nous aurons besoin d'un agrégateur pour agréger les résultats des tâches en un seul résultat d'un travail.
Cependant, je n'ai pas encore d'expérience avec Apache Camel et j'ai donc décidé de demander conseil sur l'applicabilité.
Étant donné le problème décrit ci-dessus, pensez-vous que Apache Camel serait un bon choix pour cette tâche?
Note de clôture: Je ne recherche pas de ressources externes ou une suggestion d'outil/bibliothèque. Juste une confirmation (ou le contraire), si je suis sur la bonne voie avec Apache Camel.
Merci beaucoup pour votre réponse. L'application propriétaire est, en effet, basée sur le système de fichiers, pas de JMS ou quelque chose de similaire. Je pensais aussi à une configuration similaire, mais avec plus de traducteurs de messages intermédiaires de notre modèle économique vers les fichiers et les configs attendus par l'application de traitement des tâches. – lexicore