使用Nosql配置SpringBatch

时间:2014-05-15 10:50:36

标签: java spring-batch marklogic

我们需要在已使用NoSQL产品(MarkLogic)的应用程序中使用spring批处理。我知道,作为先决条件的弹簧批处理使用一些关系表来进行基础架构管理和监视,如批处理状态等。

spring-batch是否提供了一种方法,我们可以将其配置为与此类NoSQL产品配合使用?

2 个答案:

答案 0 :(得分:1)

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(位于 spring-batch-core jar中的org.springframework.batch.core.repository包。
有关更多信息:

  1. 存储库中的Spring Batch Docs非标准数据库类型
  2. 使用Spring Batch的一些mongodb项目
  3. 也许我的问题here会添加一些信息
  4. 如果NoSQL对作业存储库的支持计划到附近功能,那么来自Spring Batch团队的人会给我们一些信息。

答案 1 :(得分:0)

spring-batch可能使用数据源,但有些情况下您可能不希望将域对象持久保存到数据库。一个原因可能是速度;在每个提交点存储域对象需要额外的时间。另一个原因可能是您不需要为特定工作保留身份。因此,Spring批处理提供了作业存储库的内存中Map版本:

<bean id="jobRepository" class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean">
<property name="transactionManager" ref="transactionManager"/> </bean>