骆驼负载平衡和;故障转移处理

时间:2014-12-05 12:52:56

标签: apache jboss apache-camel fuse jbossfuse

我正在开发一个项目,我们需要解析一个大小为>的文件。 2GB并将数据加载到DB中。我打算使用camel splitter将文件分成50个不同的文件,然后使用Apache Camel处理每个文件。

我的问题是:

如果在处理其中一个文件时,camel路由失败,那么我该如何停止驼峰路由并在文件名的DB中对此进行审核。可能会发生一些记录被处理并上传到DB,并且对于特定记录,它无法在DB中加载。所以我们需要将这个特定记录记录在其他文件中。

同样在处理时,如果由于网络故障导致的支持DB操作被停止,则在此方案中文件处理不完整。所以如何处理这个不完整的文件处理场景,因为只剩下剩余的记录应该再次处理。

1 个答案:

答案 0 :(得分:1)

当您打算拆分传入的文件时,我假设您的记录没有相互依赖性。

不是将大文件拆分成许多文件,然后在尝试保留原始文件的某些上下文时处理它们,您可以使用拆分器逐行拆分大型输入文件。拆分器可以在流模式下使用,以便不首先将大输入文件加载到存储器中。然后将每一行放在SEDA /消息队列中。在接收端使用并发消费者来获得并行处理。

文件组件使用当前处理的文件名设置交换标头。在拆分和传输过程中应保留标题。如果您的某个使用者失败,则使用路径的错误处理程序应该具有源文件名的信息以用于记录目的。即使一条消息可能处理失败,您的消费者也会继续处理消息。所以没有必要弄清楚在哪里进行处理。