Spring Batch - 适用于这个用例吗?

时间:2013-01-02 05:46:06

标签: sql database spring-batch

我有一个需要评估的用例,看看它是否适合Spring Batch。我试图通过分别在每个数据库上运行存储过程(SP)来从n个不同的数据库收集数据来构建合并数据库,来自n个不同数据库的存储过程的结果合并在一个合并数据库中,这将进一步用于下游加工。 这个整合过程应该每天运行三次。我想构建一个基于java的合并层,它在n个DB中执行SP并将结果插入到单个合并DB中。 我正在考虑编写一个多线程的自定义代码来实现这一点,以及查看Spring批处理是否合适,或者是否有一种方法可以完全消除整合层本身,并通过某种DB方法直接进行。感谢您的帮助,指点。

2 个答案:

答案 0 :(得分:1)

Spring Batch有

org.springframework.batch.item.database.StoredProcedureItemReader 

可以用作块处理器的一部分来执行您提出的操作。这将允许您使用阅读器执行SP,然后使用您自己的处理器(如果需要),然后使用

org.springframework.batch.item.database.JdbcBatchItemWriter

完成整个过程。

如果您正在查看一天中多个时段的进程,您可能还需要考虑事件驱动模型并查看Spring Integration及其

<int-jdbc:stored-proc-inbound-channel-adapter/>

适配器。这将允许您轮询目标数据库,执行有问题的SP,然后以更频繁的间隔转发结果以持久存储在下游数据库中。

答案 1 :(得分:0)

IMO这是春季批次的一个很好的用例。它将为瞬态错误提供缓冲,您可以将大型操作分解为更小的块。它也支持多线程作业。