ファイルの処理に akka-camel を使用しています。私の最初のテストはうまく機能していましたが、実際の xml ファイルを渡し始めたときに、型変換が発生しました。
これが私の消費者です(非常に単純ですが、msg.bodyAs [String]で突っ込んでいます)
class FileConsumer extends Consumer {
def endpointUri = "file:/data/input/actor"
val processor = context.actorOf(Props[Processor], "processor")
def receive = {
case msg: CamelMessage => {
println("Parent...received %s" format msg)
processor ! msg.bodyAs[String]
}
}
}
エラー:
[ERROR] [04/27/2015 12:10:48.617] [ArdisSystem-akka.actor.default-dispatcher-5] [akka://ArdisSystem/user/$a] Error during type conversion from type: org.apache.camel.converter.stream.FileInputStreamCache to the required type: java.lang.String with value org.apache.camel.converter.stream.FileInputStreamCache@4611b35a due java.io.FileNotFoundException: /var/folders/dh/zfqvn9gn7cl6h63d3400y4zxp3xtzf/T/camel-tmp-807558/cos2920459202139947606.tmp (No such file or directory)
org.apache.camel.TypeConversionException: Error during type conversion from type: org.apache.camel.converter.stream.FileInputStreamCache to the required type: java.lang.String with value org.apache.camel.converter.stream.FileInputStreamCache@4611b35a due java.io.FileNotFoundException: /var/folders/dh/zfqvn9gn7cl6h63d3400y4zxp3xtzf/T/camel-tmp-807558/cos2920459202139947606.tmp (No such file or directory)
xml の実際の内容と関係があるかどうか疑問に思っています。それらはまったく大きくありません(約70kb)。XML 自体の実際の例を提供できるとは思えません。なぜ非常に小さく、文字列に変換されることに問題があるのか について困惑しています。他のダミーのサンプル xml ファイルは問題なく動作しました。
編集: 私が持っていた提案の 1 つは、私が行った StreamCache を有効にすることでした。ただし、まだ機能していないようです。Ankush がコメントしたように、エラーは紛らわしいです。それが実際にストリームの問題なのか、それとも本当に変換の問題なのかはわかりません。
http://camel.apache.org/stream-caching.html
以下を追加しました
camel.context.setStreamCaching(true)