2017-06-19 1 views
0

Je suis nouveau sur Apache camel. Est-ce que quelqu'un sait comment utiliser camel pour traiter le contenu d'un fichier texte pour vérifier si une chaîne particulière, par exemple "erreur" est présente dans un fichier texte. Je ne peux pas sembler aller au-delà de la première ligne ci-dessous avec Java. Toute aide sera appréciéeComment rechercher une chaîne dans un fichier texte Utilisation d'Apache Camel

from("file://inputdir/").convertBodyTo(String.class). 

Répondre

1

Utilisez bodyAs et contains. Par exemple:

from("file://inputdir/") 
    .choice() 
     .when(bodyAs(String.class).contains("error")) 
      .to(/* a route for errors */) 
     .otherwise() 
      .to(/* a route for non-errors */); 
+0

J'ai essayé d'utiliser bodyAs mais éclipse met en avant une erreur. 'La méthode bodyAs (Classe ) n'est pas définie pour le type'. Je devine qu'il est obsolète. – Beanieman

+0

Quelle version de Camel utilisez-vous? ['bodyAs'] (http://static.javadoc.io/org.apache.camel/camel-core/2.19.1/org/apache/camel/builder/BuilderSupport.html#bodyAs-java.lang.Class-) est disponible en 2.19.1. – chunjef

+0

La méthode a été trouvée en 2.19.1 comme vous l'avez dit. J'utilisais 2.15. Puis j'ai changé pour 2.19.1 parce que je cherchais désespérément à résoudre ce problème, mais mon Wildfly 8.2.0 ne pouvait pas exécuter le contexte de chameau en raison de l'incompatibilité. Ensuite, j'ai dû mettre à jour Wildfly à 10.1. Mais mon application ne fonctionnerait pas tous ensemble. Existe-t-il un autre moyen sans utiliser les bodyAs ou pourriez-vous suggérer un serveur d'applications plus facile pour alimenter camel que je suis nouveau à la technologie – Beanieman

0

Vous pouvez utiliser $ {bodyAs (String)} comme suit:

<route id="_route1"> 
<from id="_from1" uri="file:work/cbr/input"/> 
<when id="_when1"> 
<simple>${bodyAs(String)} contains 'ABC'</simple> 
<log id="_log1" message="contains string ABC"/> 
<to id="_to1" uri="file:work/cbr/output"/> 
</when> 
</route>