Comment peut-Apache Camel être utilisé pour surveiller les modifications du fichier?
Je tiens à surveiller tous les fichiers dans un répertoire donné pour les changements, c'est à dire une mise à jour d'horodatage. Ce cas d'utilisation semble naturel pour les Chameaux à l'aide du fichier de composant, mais je n'arrive pas à trouver un moyen de configurer ce comportement.
Un uri comme:
file:/some/directory
consomment les fichiers dans le répertoire mais de les supprimer.
Un uri comme:
file:/some/directory?noop=true
consomme chaque fichier une fois lorsqu'il est ajouté ou quand la route est commencé.
Il est surprenant de constater qu'il n'y a pas une option dans la ligne de
consumeOnChange=true
Est-il un moyen simple pour surveiller les modifications de fichiers et de ne pas supprimer le fichier après avoir consommé de l'?
OriginalL'auteur Janx | 2013-11-20
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire par la mise en place de la idempotentKey dire Chameau, comment le fichier est considéré comme modifié. Par exemple, si les changements de taille de fichier, ou son timestamp changements etc.
Voir plus de détails sur le Chameau fichier de documentation: http://camel.apache.org/file2
Voir la section en Évitant la lecture du même fichier plusieurs fois (la quantité de consommation). Et lisez à propos de la quantité et de la idempotentKey.
Donc quelque chose de semblable
Ou
Vous pouvez lire ici sur les différents ${fichier:xxx} jetons que vous pouvez utiliser: http://camel.apache.org/file-language.html
Ah viens de me rappeler que j'correction d'un bug récemment avec idempotentKey, cependant rapporté à l'encontre de FTP. Son CHAMEAU-6936. Ce sera corrigé dans les prochaines versions. Désolé pour ce bug.
pas de soucis - si une url comme le second que vous avez posté de travailler sur une version future? Sont INSTANTANÉ artefacts publié n'importe où?
Oui trouver un lien de la page de téléchargement: camel.apache.org/download
Hmm - j'ai essayé la dernière 2.12.2-INSTANTANÉ et 2.13-INSTANTANÉ. Pas de chance. Pour être clair, mon url ressemble maintenant " ?noop=true&idempotentKey=${fichier:nom}-${fichier:modifié} c'est Peut-être pas dans les versions encore?
OriginalL'auteur Claus Ibsen
Je ne pense pas que Chameau prend en charge cette fonction spécifique, mais avec l'existant options que vous pouvez venir avec une solution similaire de la surveillance d'un répertoire.
Ce que vous devez faire est de mettre un petit retard de la valeur à vérifier le contenu du répertoire et maintenir un référentiel de lire des fichiers. Selon la façon dont vous configurez le référentiel (par taille, par nom de fichier, par un mélange d'entre eux...), cette solution serait en mesure de vous fournir des renseignements sur les nouvelles de fichiers et les fichiers modifiés. Comme une mise en garde, il serait de consommer les fichiers dans le répertoire très souvent.
Vous pourriez peut-être utiliser d'autres solutions différentes de Chameau comme Apache Commons VFS2 (j'ai écrit une explication sur la façon de l'utiliser pour ce scénario: WatchService bloque certains fichiers?
OriginalL'auteur hveiga
J'ai connu le même problème c'est à dire voulu copier les fichiers mis à jour aussi (avec de nouveaux fichiers). Voici ma configuration,
Mes tests étapes:
À ce point, je pense Chameau est censé copier ce fichier particulier, de nouveau, car sa taille est modifiée et dans ma définition de la route, j'ai utilisé "idempotent=true&idempotentKey=${fichier:nom}-${fichier:taille}&readLock=changé". Mais chameau ignore le fichier.
Quand je utilisez TRACE pour l'enregistrement, il dit: "en Sautant comme le fichier est déjà en cours...", mais je ne trouve pas de fichier de verrouillage en D:/Production répertoire quand je editted et enregistré le fichier.
J'ai aussi vérifié que le chameau ignore encore aujourd'hui le fichier si je remplace A. log (avec le même nom, mais de plus grande taille) D:/Production répertoire de l'extérieur.
Mais je l'ai trouvé, tout fonctionne comme prévu, si je retire noop=true option.
Suis-je raté quelque chose?
OriginalL'auteur Abhishek Chatterjee
Réglage noop à vrai entraînera Chameau réglage idempotent=true ainsi, malgré le fait que idempotent est faux par défaut.
Solution la plus simple pour surveiller les fichiers serait:
Cela permettra de surveiller les modifications de tous les fichiers d'un répertoire donné chaque minute.
Ce qui peut être trouvé dans le Chameau de la documentation à: http://camel.apache.org/file2.html.
OriginalL'auteur Vettel1993