在当前项目中,我们需要对从系统导出的数据进行一些相当复杂的计算。计算由第三方软件处理(这对我们来说基本上是一个黑匣子)。我们有这个软件作为 Linux 或 Windows 二进制文件,并且知道如何在命令行中使用我们的数据执行它。
在一个 CPU 内核上处理单个数据集大约需要 200 小时。但是,我们可以将数据集拆分为更小的数据集(结构等效)并并行运行计算。稍后,我们可以轻松地汇总结果。我们的目标是能够在 10 小时内处理每个数据集。
我们的客户有一个专有的工作处理应用程序。该接口是基于文件系统的:我们将作业的 EXE 文件(是的,它是 Windows 支持的)和配置 INI 文件复制到传入文件夹,作业处理应用程序在其中一个节点上执行此作业(处理错误、故障转移等.) 最后将结果复制到传出文件夹。这个专有的作业处理系统有数百个 CPU 内核,因此显然有足够的能力在 10 小时内处理我们的数据集。甚至不到30分钟。
现在,问题是,到目前为止,我们的应用程序是基于 J2EE 的,或多或少的标准 JBoss 应用程序。我们需要:
- 与专有的队列式作业处理系统集成,并
- 以可靠的方式拆分/聚合我们的数据集。
对我来说,我们必须做的许多部分看起来非常类似于拆分器和聚合器等企业应用程序集成模式。所以我在想Apache Camel是否适合实现:
- 我们将以消息的形式构建我们的作业(EXE + INI + 数据集)。
- 拆分器通过将数据集分成几个较小的数据集,将大型作业消息分成较小的消息。
- 我们可能需要实现自己的消息传递通道来将消息写入传入目录或从专有作业处理系统的传出目录读取消息。
- 我们需要一个聚合器来将作业部分的结果聚合成一个作业的单个结果。
但是,我还没有使用 Apache Camel 的经验,所以我决定就适用性征求意见。
鉴于上述问题,您认为 Apache Camel 是否适合该任务?
结束语:我不是在寻找外部资源或工具/库建议。只是一个确认(或相反),如果我在 Apache Camel 的正确轨道上。