Apache的骆驼处理中的两个同时进行的CSV文件 [英] Apache camel processing two csv files simultaneously
问题描述
我想处理两个的.csv
文件和它们的数据持久化到数据库中。
我用java DSL,而不是弹簧一样的。
为了解释这一情况会好一点:
我读两个的.csv
文件并处理它们上传他们的数据在SQL我这个执行database.The步骤
- 指定在servlet容器文件引擎初始化器。
- 创建一个
EngineInitialiser
- 绑定EngineInitialiser核心引擎。
- 创建的数据持久化到数据库所需的DAO文件。
- 创建引擎模块定义绑定。
- 定义它定义特定的文件格式的文件。
然而,问题是
有试图解组交换到 BindyCsvDataFormat
时的一个问题。有两种格式的类文件,因为我已经指定一个用于文件1输入文件,一个用于 file2.csv
。
现在bindy试图映射格式,以父类的文件。但是,当它拿起 file1.csv
它,它映射到MODEL1和MODEL2共同定义在同一个包。
但是,应该将其映射到只有一个类。怎么我强迫它映射到只有一种格式类?
错误如下:
java.lang.IllegalArgumentException异常:有些字段缺失(可选的还是强制的),行:1
在org.apache.camel.dataformat.bindy.BindyCsvFactory.bind(BindyCsvFactory.java:215)
atorg.apache.camel.dataformat.bindy.csv.BindyCsvDataFormat.unmarshal(BindyCsvDataFormat.java:169)atorg.apache.camel.processor.UnmarshalProcessor.process(UnmarshalProcessor.java:58)
在org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
在org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
在org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
在org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
在org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:71)在org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)在org.apache.camel.processor.DelegateAsyncProcessor.processNext (DelegateAsyncProcessor.java:99)at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
在org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91)
在org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
在org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:333)
在org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:223)
在org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45)
在org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
在org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:304)
在org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
在org.apache.camel.processor.Pipeline.process(Pipeline.java:117)
在org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
在org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45)
在org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
在org.apache.camel.processor.UnitOfWorkProcessor.processAsync(UnitOfWorkProcessor.java:150)
在org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:117)
在org.apache.camel.processor.RouteInflightRepositoryProcessor.processNext(RouteInflightRepositoryProcessor.java:50)
在org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
在org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
在org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
在org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
在org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:71)
在org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:352)
在org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:175)
在org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:136)
在org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:138)
在org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:90)
在java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:441)
在java.util.concurrent.FutureTask中$ Sync.innerRunAndReset(FutureTask.java:317)
在java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
在java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
在java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)
在java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)
在java.util.concurrent.ThreadPoolExecutor中的$ Worker.runTask(ThreadPoolExecutor.java:886)
在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:908)
在java.lang.Thread.run(Thread.java:619)
|#]
块引用>解决方案不同的实体管理器应该解决的问题。
I am trying to process two
.csv
files and to persist their data to the database. I am using java dsl and not springs for the same.To explain the scenario a bit better :
I am reading two.csv
files and processing them to upload their data in the sql database.The steps I performed for this are
- Specify the engine initialiser in the servlet container file.
- Create an
EngineInitialiser
- Bind the EngineInitialiser to the core Engine.
- Create the dao files required to persist the data to the database.
- Create the engine module which defines the bindings.
- Define the files which define the format specific for the files.
However, the problem is
There is a problem when trying to unmarshal the exchange to a
BindyCsvDataFormat
. There are two format class files as I have specified one for the file1 input file and one for thefile2.csv
.Now bindy is trying to map the format to the parent class file .However, when it picks up the
file1.csv
it maps it to both the model1 and model2 defined under the same package. However, it should map it to only one class .How do I force it to map to only one format class?
The error is as follows:java.lang.IllegalArgumentException: Some fields are missing (optional or mandatory), line: 1 at org.apache.camel.dataformat.bindy.BindyCsvFactory.bind(BindyCsvFactory.java:215) atorg.apache.camel.dataformat.bindy.csv.BindyCsvDataFormat.unmarshal(BindyCsvDataFormat.java:169)atorg.apache.camel.processor.UnmarshalProcessor.process(UnmarshalProcessor.java:58) at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:71)at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:333) at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:223) at org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:304) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.Pipeline.process(Pipeline.java:117) at org.apache.camel.processor.Pipeline.process(Pipeline.java:80) at org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.processor.UnitOfWorkProcessor.processAsync(UnitOfWorkProcessor.java:150) at org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:117) at org.apache.camel.processor.RouteInflightRepositoryProcessor.processNext(RouteInflightRepositoryProcessor.java:50) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:71) at org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:352) at org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:175) at org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:136) at org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:138) at org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:90) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:619) |#]
解决方案Different entity managers should solve the problem.
这篇关于Apache的骆驼处理中的两个同时进行的CSV文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!