【发布时间】:2014-05-15 10:50:36
【问题描述】:
我们需要在已经使用NoSQL 产品 (MarkLogic) 的应用程序中使用 Spring Batch。我知道作为先决条件,spring-batch 使用一些关系表进行基础设施管理和监控,如批处理状态等。
spring-batch 是否提供了一种我们可以将其配置为与 NoSQL 这样的产品一起使用的方法?
【问题讨论】:
标签: java spring-batch marklogic
我们需要在已经使用NoSQL 产品 (MarkLogic) 的应用程序中使用 Spring Batch。我知道作为先决条件,spring-batch 使用一些关系表进行基础设施管理和监控,如批处理状态等。
spring-batch 是否提供了一种我们可以将其配置为与 NoSQL 这样的产品一起使用的方法?
【问题讨论】:
标签: java spring-batch marklogic
Spring Batch Job Repository 基于 JDBC DAO 并支持一组紧密的 RDBM。例如,在 Spring Batch 2.2.5 中,它的 DB2、HSQL、SQLSERVER、MYSQL、ORACLE、POSTGRES、SYBASE、H2。
参见 spring-batch-infrastructure-x.x.x.jar 中的 org.springframework.batch.support.DatabaseType 类
正如 Rafik Beldi 中提到的,也支持基于内存的作业存储库。如果您不关心过去的执行情况,这些可能是一个很好的解决方案。在内存数据库中,如 h2 支持基于文件的持久化,我的帮助(尽管从我的角度来看是有限且不可靠的)。
如果你必须支持 NoSQL,你需要自己开发或在 github 中寻找一些现有的项目。
基本上从覆盖 JobRepositoryFactoryBean 开始并添加您自己的 DAO(位于
org.springframework.batch.core.repository 包在 spring-batch-core jar 中)。
欲了解更多信息:
如果 NoSQL 对作业存储库的支持计划在 near 功能中,如果 Spring Batch 团队的某个人能给我们一些信息,那就太好了。
【讨论】:
spring-batch 可能使用数据源,但在某些情况下您可能不想将域对象持久化到数据库中。一个原因可能是速度。在每个提交点存储域对象需要额外的时间。另一个原因可能是您不需要为特定工作保留状态。为此,Spring batch 提供了作业存储库的内存 Map 版本:
<bean id="jobRepository" class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean">
<property name="transactionManager" ref="transactionManager"/> </bean>
【讨论】: