6
votes

Mule ESB - deux fichiers comme entrée (attente pour les deux)

Je veux faire un flux où:

  1. En attente de deux fichiers: file_name.xdf and File_Name.dff.dff: Si les deux fichiers (je souhaite traiter deux fichiers en même temps (en attente de la fois), le nom du fichier de ces fichiers devrait être identique)
  2. Processez ces fichiers convertissent au tableau d'octet
  3. Exécutez le script Groovy

    Comment puis-je faire le premier point?


1 commentaires

Je suis confronté à une situation similaire. Curieux comment l'avez-vous résolu


3 Réponses :


0
votes

Utilisation d'un composant de quartz - déclenchez votre écoulement à l'intervalle souhaité. En savoir plus à ce sujet ici: http://www.mulesoft.org/documentation/display/current/quartz + Transport + référence

Lorsqu'il est déclenché - écrivez le code Java qui compare les deux répertoires et trouve des paires de fichiers entre les deux.

En haut de la tête, je ne suis pas sûr que s'il existe un moyen de définir un filtre de fichiers entrant de manière dynamique. Sinon, on pourrait toujours gérer tout le processus en Java; Lisez les fichiers, convertir en byte Array, propagez enfin le message sur le script groovy.


0 commentaires

0
votes

Vous pouvez avoir deux points de terminaison entrants de fichier, un pour chacun des fichiers que vous attendez. Lorsque votre flux lit les fichiers, il copie le fichier dans un autre répertoire. Si l'autre fichier était déjà traité et déplacé dans le répertoire (vous pouvez suivre cela à l'aide d'une variable dans un magasin d'objet) Vous économisez avec nom.Ready et déplacez le fichier précédemment déplacé en nom2.Ready.

Vous avez un troisième flux avec un fichier d'extrémité entrant de fichier qui se lit à partir de ce répertoire à l'aide de *. Patron de caractères génériques. Puis utilisez module demandeur pour charger l'autre fichier dans une variable.


1 commentaires

Je sais que ce n'est pas une solution élégante.



2
votes

Vous pouvez regrouper les fichiers en fonction de leur "nom de base" (c.-à-d. Prenez le nom du fichier sans l'extension), puis traiter chaque fichier dans l'ensemble agrégé.

Agrégation pourrait être effectuée à l'aide d'un agrégateur de collection ou d'un Agregistrateur personnalisé, voici un exemple de chacun:

à l'aide d'un collection-agrégateur: xxx


Utilisation Un agrégateur personnalisé (vous aurez besoin d'une classe Java personnalisée): xxx

et il s'agit d'une implémentation possible pour l'agrégateur personnalisé (il pourrait être plus élégant: xxx


0 commentaires