Apache的骆驼处理中的两个同时进行的CSV文件 [英] Apache camel processing two csv files simultaneously

查看:117
本文介绍了Apache的骆驼处理中的两个同时进行的CSV文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想处理两个的.csv 文件和它们的数据持久化到数据库中。
我用java DSL,而不是弹簧一样的。

为了解释这一情况会好一点:

我读两个的.csv 文件并处理它们上传他们的数据在SQL我这个执行database.The步骤


  1. 指定在servlet容器文件引擎初始化器。

  2. 创建一个 EngineInitialiser

  3. 绑定EngineInitialiser核心引擎。

  4. 创建的数据持久化到数据库所需的DAO文件。

  5. 创建引擎模块定义绑定。

  6. 定义它定义特定的文件格式的文件。

然而,问题是

有试图解组交换到 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

  1. Specify the engine initialiser in the servlet container file.
  2. Create an EngineInitialiser
  3. Bind the EngineInitialiser to the core Engine.
  4. Create the dao files required to persist the data to the database.
  5. Create the engine module which defines the bindings.
  6. 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 the file2.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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆