Hec*_*tor 6 file unzip apache-camel
如何使用Apache Camel从zip文件中提取文件(一个或多个)?可能吗?
我正在尝试这个
from("file:/home/myinputzip?noop=true&delay=5000&moveFailed=error")
.split(new ZipSplitter())
.streaming().convertBodyTo(String.class)
.to("file:/home/myinputzip")
.end();
Run Code Online (Sandbox Code Playgroud)
当我启动应用程序时,文件是从zip中提取的,但是camel会抛出异常并将文件移动到错误文件夹:
错误:org.apache.camel.processor.DefaultErrorHandler - (ExchangeId上的MessageId:ID-ubuntu-35217-1377806407437-0-5:ID-ubuntu-35217-1377806407437-0-7)的传递失败.交付尝试后用尽:1捕获:org.apache.camel.component.file.GenericFileOperationFailedException:无法将null body写入文件:/home/myinputzip/aVIII_crrpfp201304.cap org.apache.camel.component.file.GenericFileOperationFailedException:无法写入null body to file:/home/myinputzip/aVIII_crrpfp201304.cap org.apache.camel.component.file.FileOperations.storeFile(FileOperations.java:194)at org.apache.camel.component.file.GenericFileProducer.writeFile(GenericFileProducer. java:257)org.apache中的org.apache.camel.component.file.GenericFileProducer.processExchange(GenericFileProducer.java:159)atg.apache.camel.component.file.GenericFileProducer.process(GenericFileProducer.java:80)位于org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)的.camel.util.AsyncProcessorConverterHelper $ ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)org.apache.camel.processor.SendProcessor $ 2.doInAsyncProducer( SendProcessor.java:122)org.apache.camel.impl.ProducerCache.doInAsyncProducer(ProducerCache.java:298)at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:117)
谁能帮我?
我解决如下
from("file:/home/myinputzip?noop=true&delay=5000&moveFailed=error")
.split(new ZipSplitter())
.streaming().convertBodyTo(String.class)
.choice()
.when(body().isNotNull())
.to("file:/home/myinputzip")
.end()
.end();
Run Code Online (Sandbox Code Playgroud)