2017-06-19 13 views
0

Apache camelを初めて使用しています。テキストファイルの内容を処理するためにcamelを使用して特定の文字列、たとえば「エラー」がテキストファイル内に存在するかどうかをチェックする方法は誰にも分かります。私は、javaで下の最初の行を過ぎているようです。すべてのヘルプはテキストファイル内の文字列を検索する方法Apache Camelを使用する

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

答えて

1

使用bodyAscontainsを理解されるであろう。たとえば、次のよう

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

をIはbodyAsを使用して試みたが、Eclipseはエラーを強調しています。 'メソッドbodyAs(クラス)は、型'で定義されていません。私はそれが非難されていると推測しています。 – Beanieman

+0

どのバージョンのCamelをお使いですか? ['bodyAs'](http://static.javadoc.io/org.apache.camel/camel-core/2.19.1/org/apache/camel/builder/BuilderSupport.html#bodyAs-java.lang.Class- )は2.19.1で利用可能です。 – chunjef

+0

あなたが言ったように、このメソッドは2.19.1にあります。私は2.15を使用していました。その後、私は2.19.1に変更しました。なぜなら、この問題を解決することが切望されていましたが、Wildfly 8.2.0は、互換性のためにラクダのコンテキストを実行できませんでした。その後、Wildflyを10.1にアップグレードする必要がありました。しかし、私のAppは、すべて一緒に実行されませんでした。 bodyAを使用せずに別の方法がありますか?または、私が技術の新人であるので、より簡単なApp Serverでラクダを動かすことを提案できますか? – Beanieman

0

あなたは$ {bodyAs(文字列)}を使用することができる:

<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> 
関連する問題