SpringBoot3+SpringBatch5+SpringCloudDataFlow2(多数据源)

 Spring-Batch使用Spring-Cloud-Data-Flow进行资源管理,Job Repository元数据与业务数据隔离。

1、Spring-Cloud-Data-Flow(简写SCDF)

1.1、部署

按照官方文档部署

1.2、效果

访问Dashboard页面http://ip:9393/dashboard

2、SpringBoot3+SpringBatch5+SpringCloudTask3

  • pom.xml
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-batch</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-task</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-3-starter</artifactId>
    </dependency>
</dependencies>
  •  EnableBootBatchConfigure.java
import com.alibaba.druid.pool.DruidDataSource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.task.configuration.DefaultTaskConfigurer;
import org.springframework.cloud.task.configuration.EnableTask;
import org.springframework.cloud.task.configuration.TaskConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.jdbc.support.JdbcTransactionManager;

import javax.sql.DataSource;
@EnableTask
@EnableBatchProcessing(
        dataSourceRef = "repositoryDataSource",
        transactionManagerRef = "repositoryTransactionManager",
        tablePrefix = "boot3_batch_",//使用springboot3必须配置boot3前缀
        maxVarCharLength = 1000)
@Slf4j
public class EnableBootBatchConfigure {


    //配置spring-batch repository元数据数据源
    @Bean("repositoryDataSource")
    @ConditionalOnExpression("@environment.getProperty('spring.datasource.druid.batch-repository.url')!=null")
    @ConfigurationProperties( prefix = "spring.datasource.druid.batch-repository" )
    @ConditionalOnMissingBean(name="repositoryDataSource")
    public DruidDataSource repositoryDataSource() {
        DruidDataSource ds =   new DruidDataSource();
        log.info("spring batch repository datasource use [spring.datasource.druid.repository]");
        return ds;
    }


    @Bean("repositoryTransactionManager")
    public JdbcTransactionManager repositoryTransactionManager(@Qualifier( "repositoryDataSource" ) DruidDataSource dataSource ) {
        log.info("pring batch repository datasource url:{},username:{}",dataSource.getUrl(),dataSource.getName());
        return new JdbcTransactionManager( dataSource );
    }

    @Bean
    public TaskConfigurer taskConfigurer(@Qualifier("repositoryDataSource") DataSource dataSource) {
        //使用springboot3必须配置boot3前缀
        return new DefaultTaskConfigurer(dataSource, "boot3_task_", null);
    }

    //配置业务默认数据源
	@Bean
	@Primary
	public DataSource dataSource() {
		return new DruidDataSourceWrapper();
	}
    @Bean("transactionManager")
    @Primary
	public JdbcTransactionManager masterTransactionManager(DataSource dataSource ) {
		return new JdbcTransactionManager( dataSource );
	}
}
  • application.yaml
spring:
  datasource:
    druid:
      #配置业务默认数据源,使用mybatis、jpa、mybatisplus均可
      url: jdbc:mysql://127.0.0.1:3306/cloud-batch
      username: 'busi'
      password: 'pass'
      max-active: 100
      batch-repository:    #配置springbatch元数据数据源(对应SCDF数据库,与第一步部署时配置的SCDF数据库信息保持一致)
        url: jdbc:mysql://127.0.0.1:3306/dataflow
        username: 'dataflow'
        password: 'pass'
        max-active: 10

  cloud:
    task:
      schemaTarget: 'boot3'
      tablePrefix: 'boot3_task_' #配置springboot3前缀
  batch:
    jdbc:
      initialize-schema: never

3、 运行效果

启动Spring-Batch服务启动,SCDF Task executions效果如下

执行 Spring-Batch Job,SCDF Job executions效果如下

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值