Apache Camel 同时处理两个 csv 文件

2024-04-04

我正在尝试处理两个.csv文件并将其数据保存到数据库中。 我使用的是 java dsl 而不是 spring。

为了更好地解释这个场景:
我正在读两本.csv文件并处理它们以将数据上传到 sql 数据库中。我为此执行的步骤是

  1. 在 servlet 容器文件中指定引擎初始化程序。
  2. 创建一个EngineInitialiser
  3. 将 EngineInitialiser 绑定到核心 Engine。
  4. 创建将数据保存到数据库所需的 dao 文件。
  5. 创建定义绑定的引擎模块。
  6. 定义文件,定义文件特定的格式。

然而,问题是

尝试将交换解组到BindyCsvDataFormat。有两种格式类文件,因为我已指定一种用于 file1 输入文件,另一种用于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) |#]


不同的bindy模型需要使用不同的包名。这是目前的一个限制,将来会得到改进。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache Camel 同时处理两个 csv 文件 的相关文章

随机推荐

  • 有没有办法直接访问 CSS 网格中自动放置元素的实际网格坐标?

    还有人问了类似的问题here https stackoverflow com questions 51327802 how to get the grid coordinates of an element using javascript
  • R 取子集后得到数据框的原始索引

    子集化后是否可以获取数据框的原始索引 它存储在某个地方 但我不确定在哪里以及如何访问它 我知道如果这是算法设计的一部分 会有更好的解决方案 我只是好奇是否有人知道是否可能 示例场景 df data frame atr1 integer at
  • 保留元素的排序列表,按该元素外部的属性排序

    我有一个 管理器 类维护对象列表 每个对象都有一定的 位置 但他们不知道这一点 只有管理者知道这一点 管理器必须为每个对象分配一个位置 并维护根据此 外部属性 排序的对象列表 请注意 对象的位置可以随时更改 理想情况下 我应该能够立即获取位
  • 在JavaScript中获取两个日期之间的年、月、日差异[重复]

    这个问题在这里已经有答案了 好吧 我在这里发现了很多类似的问题 试图获取两个日期之间的年 月和日的差异 但没有答案可以满足我的要求 所以我写了一些东西来计算 它似乎有效 但也许这里的一些专家可以进行更正或帮助使这更简单 您可以使用momen
  • Magento 高级配置文件导出 - 将 URL 添加到 IMAGE 路径

    刚使用 Magento 几周 就成功地使用了高级导出配置文件 非常方便 我想做的是将 url 值添加到输出列之一 特别是图像 url 我想将 url 附加到路径输出的开头 有人可以帮忙吗
  • 可空字段在写入 Spark Dataframe 时发生更改

    以下代码从 parquet 文件读取 Spark DataFrame 并写入另一个 parquet 文件 将 DataFrame 写入新的 Parquet 文件后 ArrayType 中的 Nullable 字段的 DataType 会发生
  • DAO.Recordset、DAO.Recordsets、DAO.Recordset2 之间的差异

    谁能解释一下之间的区别DAO Recordset DAO Recordsets and DAO Recordset2在 MS Access 2007 中 基本上使用记录集 给出一个例子 以便更清楚 我从帮助选项中找到了一些参考资料 但我不清
  • 为什么我的查询只显示一个结果?

    为什么我从下面的查询中只得到一个结果 建议的 答案 的名字是 Susan 而不是我在结果中得到的名字 SELECT EmpFirstName EmpLastName p ProductName as ProductName YEAR c O
  • 分割功能 - 避免最后一个空白空间

    我对如何使用 split 功能有疑问 str James Joseph Arun str split 我得到了结果 James Joseph Arun 我需要输出为 James Joseph Arun 最好的方法是什么 要删除所有空字符串
  • Mongo数据库保存Map中的数据

    我有以下有效的代码 if aDBCursor hasNext DBObject aDbObject aDBCursor next aDbObject put title Test Title ArrayList
  • 如何仅以编程方式禁用我的应用程序的移动数据

    我正在开发一个应用程序 我担心用户之间可以传输的数据量 由于一些用户的移动数据计划有限 而另一些则没有 我想知道是否可以开发一个开关来禁用我的特定应用程序的移动数据 有点像Android自己的数据使用 gt 移动 gt 应用程序 gt 限制
  • Typescript - 逐步扩展对象的类型

    我试图通过 TS 实现以下目标 let m Extendable m add one 1 m now has one field m add two 2 m now has one and two fields 我熟悉通过以下方式在 TS
  • Python - 在特定长度的文件中查找字符串,并且该字符串必须是大写字母和数字

    我想找到一个特定长度的字符串 例如 7 个字符 该字符串只能包含大写字母和数字 我有想法 逐行读取文件 我不确定这里的最佳实践是在一个块中读取整个文件还是使用循环逐行读取文件 必须使用循环逐行读取文件吗 read lines in text
  • GA 中的排名选择?

    我已经实施了Roulette wheel selection in GA TotalFitness sum Fitness ProbSelection zeros PopLength 1 CumProb zeros PopLength 1
  • matlab数据文件到pandas DataFrame [重复]

    这个问题在这里已经有答案了 有没有标准的转换方法matlab mat matlab格式数据 文件到PandaDataFrame 我知道可以通过使用解决方法scipy io但我想知道是否有一种简单的方法可以做到这一点 我找到了两种方法 sci
  • 在垂直和水平步进材料之间切换

    如何切换垫子垂直步进器 and 矩阵水平步进器来自具有相同步进步骤的角度分量 为了避免重写相同的 html 内容 请这样做 创建模板并使用 hashtag 然后你可以使用插入它们ng container ngTemplateOutlet h
  • Android 6.0 Marshmallow:片段动画出现奇怪的错误

    我在应用商店中的一个应用程序在 Android 5 0 上运行得非常好 但自从今天我将我的设备升级到 6 0 后 我遇到了奇怪的错误 我将其范围缩小到片段过渡动画 ftrans setCustomAnimations inAnim outA
  • constexpr 函数何时在编译时进行求值?

    既然声明为 constexpr 的函数有可能在运行时被调用 那么编译器根据什么标准决定是在编译时还是在运行时计算它呢 template
  • java-8中的Stream方法是如何实现的?

    当我尝试新的 java 8 Stream 时 我想深入了解它的方法是如何实现的 所以我查看了 Stream 类的实现 发现所有方法都是抽象的 我的问题是这些方法怎么样distinct and map 它必须在某个地方有具体的实现 这些方法在
  • Apache Camel 同时处理两个 csv 文件

    我正在尝试处理两个 csv文件并将其数据保存到数据库中 我使用的是 java dsl 而不是 spring 为了更好地解释这个场景 我正在读两本 csv文件并处理它们以将数据上传到 sql 数据库中 我为此执行的步骤是 在 servlet