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

是否有一种方法可以跳过Spring Batch的持久化元数据,只用于特定的作业?

海保臣
2023-03-14

有几个例子说明我们如何使用Spring Batch,而无需将元数据持久化到数据库。以下是关于这一问题的一些例子和相关问题:

>

  • spring-batch不将元数据持久化到数据库?

    如何避免元数据在DB中的Spring batch持久性

    或者,将Spring Batch用于第二类作业是否会过度使用/根本不需要?带有@dischedure注释的方法就足够了吗?

  • 共有1个答案

    洪哲彦
    2023-03-14
    1. 是否有一种方法可以将第一类作业(例如报表处理)的元数据保存在数据库中,而对第二类作业(例如解锁用户帐户)完全不使用数据库持久性?

    这是一个配置问题。您可以为数据源使用Spring概要文件。其思想是定义一个持久的数据源和一个内存中的数据源。然后像往常一样使用数据源配置所有作业,并在运行时使用正确的配置文件运行它们。下面是一个快速示例:

    import javax.sql.DataSource;
    
    import com.zaxxer.hikari.HikariDataSource;
    
    import org.springframework.batch.core.Job;
    import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Profile;
    import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
    import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
    
    @Configuration
    @EnableBatchProcessing
    public class JobsConfiguration {
    
        @Bean
        public Job job1() {
            return null;
        }
    
        @Bean
        public Job job2() {
            return null;
        }
    
        @Bean
        @Profile("in-memory")
        public DataSource embeddedDataSource() {
            return new EmbeddedDatabaseBuilder()
                    .setType(EmbeddedDatabaseType.HSQL)
                    .addScript("/org/springframework/batch/core/schema-hsqldb.sql")
                    .build();
        }
    
        @Bean
        @Profile("persistent")
        public DataSource persistentDataSource() {
            HikariDataSource hikariDataSource = new HikariDataSource();
            // TODO configure datasource
            return hikariDataSource;
        }
    }
    

    如果使用-dspring.profiles.active=in-memory运行应用程序,则应用程序上下文中只有嵌入的datasource bean,由@enableBatchProcessing自动配置的作业存储库使用该bean。

     类似资料:
    • 我知道Redis从内存中提供所有数据,但它是否也可以在服务器重新引导时持久存在,这样当服务器重新引导时,它将从磁盘中读取所有数据到内存中。或者它总是一个空白存储,只存储数据,而应用程序运行没有持久性?

    • 今天早上,我发现了我的GitHub Actions BETA版邀请,并开始玩它,目的是迁移一些我目前在CircleCi上运行的简单构建、测试和部署管道。 我仍然在试图理解操作,但我心目中的流程是,在推动之后,工作流中的第一个操作将启动一个Docker容器。在这个容器中,我将运行一些简单的构建过程,比如最小化资产和移除人工制品。接下来的操作将在构建上运行一些测试。管道中的下一个操作将部署到许多环境中

    • 本文向大家介绍redis数据的两种持久化方式对比,包括了redis数据的两种持久化方式对比的使用技巧和注意事项,需要的朋友参考一下 一.概念介绍 redis提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Apend Only File)。 RDB方式 RDB方式是一种快照式的持久化方法,将某一时刻的数据持久化到磁盘中。 •redis在进行数据持久化的过程中,会先将数据

    • redis提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File)。 RDB,简而言之,就是在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上; AOF,则是换了一个角度来实现持久化,那就是将redis执行过的所有写指令记录下来,在下次redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了。 其实R

    • 本文向大家介绍Redis 持久化有几种方式?相关面试题,主要包含被问及Redis 持久化有几种方式?时的应答技巧和注意事项,需要的朋友参考一下 Redis 的持久化有两种方式,或者说有两种策略: RDB(Redis Database):指定的时间间隔能对你的数据进行快照存储。 AOF(Append Only File):每一个收到的写命令都通过write函数追加到文件中。