Apache Camel 是否支持 Spring Batch?我是使用骆驼路线的批次。现在我们想迁移到 Spring Batch,但不确定我的骆驼路线是否可以与 Spring Batch 集成。
2 回答
更新答案: 从 Camel 2.10 开始支持 Spring 批处理,
http://camel.apache.org/springbatch.html
本质上,Camel 中的 Spring Batch 组件将能够从路由中触发 Spring 批处理作业。
示例:
from("direct:startBatch").to("spring-batch:myJob");
其中“myJob”是在别处定义的春季批处理作业。
交换中的所有 Camel 标头都作为参数发送到 spring 批处理作业。
考虑一种情况,必须从文件夹中挑选并处理已删除的文件。apache camel 和 spring batch 的结合可以用最少的代码解决这种集成。使用简单的骆驼 DSL 代码。
Apache Camel 解决集成问题,Spring Batch 以批处理模式处理。
对于集成,需要 apache 骆驼路线,对于批处理,需要 spring 批处理作业。
更多细节,
将构建 Apache Camel Route 以选择任何已删除的 csv 文件并触发春季批处理。
**注意:**我没有提供 Spring Batch Job 将做什么的详细信息。假设它的一个 JOB 只是为了处理文件。
@Value("${dir.location}")
private String dropLocation;
@Override
public void configure() throws Exception {
from(
"file:"
+ dropLocation
+ "?delay=550&include=.*.csv&moveFailed=error")
.to("spring-batch:anyFileProcessingJob?jobLauncherRef=fileProcessingJobLauncher");
}
Apache Camel 配置了上面的路由,以选择放置在文件夹“dropLocation”中的任何文件。Camel 将密切关注文件夹,如果任何文件丢失,将触发 Spring Batch JOB。
在这里,任何文件都放在配置的文件夹“dropLocation”中,camel 将触发作业 anyFileProcessingJob,作业启动参考将是 fileProcessingJobLauncher。
“fileProcessingJobLauncher”将运行批处理作业,如果需要,可以将必要的参数从“fileProcessingJobLauncher”传递给作业。