【问题标题】:Configuring SpringBatch with Nosql使用 Nosql 配置 SpringBatch
【发布时间】:2014-05-15 10:50:36
【问题描述】:

我们需要在已经使用NoSQL 产品 (MarkLogic) 的应用程序中使用 Spring Batch。我知道作为先决条件,spring-batch 使用一些关系表进行基础设施管理和监控,如批处理状态等。

spring-batch 是否提供了一种我们可以将其配置为与 NoSQL 这样的产品一起使用的方法?

【问题讨论】:

    标签: java spring-batch marklogic


    【解决方案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(位于 org.springframework.batch.core.repository 包在 spring-batch-core jar 中)。
    欲了解更多信息:

    1. 存储库中的 Spring Batch Docs 非标准数据库类型
    2. 一些 mongodb 使用 Spring Batch 的项目
    3. 也许我的问题here会补充一些信息

    如果 NoSQL 对作业存储库的支持计划在 near 功能中,如果 Spring Batch 团队的某个人能给我们一些信息,那就太好了。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 不是很有用,因为这种方法只能用于 spring 建议的测试和快速原型设计。 see here
      猜你喜欢
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      • 1970-01-01
      • 2018-01-03
      • 2012-05-20
      • 2014-09-11
      • 2014-09-06
      • 1970-01-01
      相关资源
      最近更新 更多