当前位置: 首页 > 知识库问答 >
问题:

如何禁用Spring批处理元数据(或至少强制内存中的元数据)?

洪俊能
2023-03-14

我正在创建一个微服务,在我们的数据库上运行一些非常简单的批处理作业。我遇到了一个问题,Spring Batch在运行作业之前寻找自己的表,它们不存在,我不希望它们存在。

我尝试了许多在stackoverflow上找到的方法,但都没有成功。

我尝试使用不同的数据源,一个指向包含业务数据的实际数据库,另一个指向内存中的h2数据库。在这种情况下,我会得到“没有正在进行的事务”或定义了多个数据源bean(即使使用限定符和主注释)的例外。我尝试了多种实现JobRepository和整个BatchConfiger的组合,但没有成功。

我尝试为批处理表使用单独的模式,但是发生了一些相同的问题,结果证明这对于生产来说也不是一个可接受的解决方案。

所以现在我有点被卡住了。。。如果可能的话,我想使用Spring批处理,但是Spring批处理作业不能存在于业务数据库中。

也许有一种替代Spring Batch的方法,它不需要为作业存储元数据?正如我提到的,批处理作业相当简单,如果一个在运行中失败,它可以从一开始就重新启动,并且不会影响数据的完整性(可能一个用户会收到一封重复的电子邮件,但我可以接受)。

如果没有,我可能最终会从头开始写一些东西。

我很惊讶没有内置的方法来禁用元数据表,尽管我可能不完全理解Spring批处理的用途?关于spring的示例指南。io似乎是一个非常简单的用例,barley提到需要自己的表(它只是说它运行自己的模式)-@platform@.sql启动时的文件)。

共有1个答案

袁奇玮
2023-03-14

看来,我几年前就已经面对过这个问题了。默认情况下,spring batch将作业执行过程加载到数据库中。要禁用它,必须覆盖配置中的setDataSource方法,并将其设置为空。

您的配置应该如下所示:

@Configuration
@EnableAutoConfiguration
@EnableBatchProcessing
public class BatchConfiguration extends DefaultBatchConfigurer {

    @Override
    public void setDataSource(DataSource dataSource) {
        
    }

}

 类似资料:
  • 我使用Spring批处理从Oracle数据库读取数据并将结果写入CSV文件。 我还需要将spring批处理元数据表与oracle数据库分开,为此,我在批处理配置中配置了两个不同的数据源(spring批处理元数据的内存数据库)。 这是我的代码: 批处理配置。JAVA 然后我的itemReader bean看起来像: 当我运行批处理时,一切正常。 但是当我尝试在我的BatchApplication中添

  • 有什么方法可以用spring batch实现这一点,或者我应该创建一个Dao并批量删除每个集合的旧数据。

  • 我正在使用以下技术编写批处理:Spring Boot来运行应用程序:V1.5.3。RELEASE Spring Batch with Spring Batch Config: spring-batch-架构体系V3.0.7。将我的通用DAO的Spring Data发布到业务数据库: 我想在另一个数据库中写入元数据(例如在内存HSQL或H2中),但我找不到方法,因为上下文正在同一个数据库中写入元数据

  • 我在自己的oracle数据库中使用以下链接创建了spring批处理元数据表 https://github.com/spring-projects/spring-batch/tree/main/spring-batch-core/src/main/resources/org/springframework/batch/core 但是当我运行我的Spring批处理时,它会抛出错误: 目前我使用的是sp

  • 我有一个Spring批处理作业,它从DB读取并写入CSV。批处理作业正在尝试使用我正在从中读取的数据库来保存批处理的状态。我不希望这种事发生。我正在使用Spring4。 经过大量的搜索,我尝试了两种方法,但都失败了。 方法1: null 我得到的例外情况如下。虽然例外并不是一个节目停止,我想摆脱它。 错误日志:

  • 我正在编写Spring批的Spring Boot应用程序,其中ItemReader从Oracle数据库读取数据并将数据写入postgres sql,但我得到了以下错误 我不想创建spring批处理元数据表,我的应用程序不需要监视作业,请就此向我提出建议。提前谢谢!!