首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Spring Cloud Task 集成Spring Cloud Task Batch(二)

Spring Cloud Task 集成Spring Cloud Task Batch(二)

原创
作者头像
堕落飞鸟
发布2023-04-17 10:40:04
发布2023-04-17 10:40:04
4920
举报
文章被收录于专栏:飞鸟的专栏飞鸟的专栏

创建Spring Cloud Task

下一步是创建Spring Cloud Task,它将用于运行我们的Spring Batch作业。为此,我们需要定义一个TaskConfigurer和一个TaskLauncher:

代码语言:javascript
复制
import org.springframework.batch.core.Job;
import org.springframework.batch.core.configuration.JobRegistry;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.core.configuration.support.JobRegistryBeanPostProcessor;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.batch.core.launch.support.SimpleJobLauncher;
import org.springframework.batch.core.repository.JobRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.task.configuration.DefaultTaskConfigurer;
import org.springframework.cloud.task.configuration.EnableTask;
import org.springframework.cloud.task.listener.TaskExecutionListener;
import org.springframework.cloud.task.repository.TaskExecution;
import org.springframework.cloud.task.repository.TaskExplorer;
import org.springframework.cloud.task.repository.TaskRepository;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;

import javax.sql.DataSource;

@Configuration
@EnableTask
public class TaskConfiguration {

    @Autowired
    private DataSource dataSource;

    @Autowired
    private JobBuilderFactory jobBuilderFactory;

    @Autowired
    private StepBuilderFactory stepBuilderFactory;

    @Autowired
    private TaskRepository taskRepository;

    @Autowired
    private TaskExplorer taskExplorer;

    @Autowired
    private JobRegistry jobRegistry;

    @Bean
    public TaskExecutionListener taskExecutionListener() {
        return new CustomTaskExecutionListener();
    }

    @Bean
    public JobRegistryBeanPostProcessor jobRegistryBeanPostProcessor() {
        JobRegistryBeanPostProcessor postProcessor = new JobRegistryBeanPostProcessor();
        postProcessor.setJobRegistry(jobRegistry);
        return postProcessor;
    }

    @Bean
    public JobLauncher jobLauncher(JobRepository jobRepository) {
        SimpleJobLauncher jobLauncher = new SimpleJobLauncher();
        jobLauncher.setJobRepository(jobRepository);
        return jobLauncher;
    }

    @Bean
    public PlatformTransactionManager transactionManager() {
        return new DataSourceTransactionManager(dataSource);
    }

    @Bean
    public DefaultTaskConfigurer defaultTaskConfigurer() {
        return new DefaultTaskConfigurer(dataSource);
    }

}

在这个类中,我们定义了一个DataSource属性,该属性将用于配置作业存储库。我们还注入了jobBuilderFactory,stepBuilderFactory,taskRepository,taskExplorer和jobRegistry,这些属性将用于在任务执行期间启动Spring Batch作业。

我们定义了一个taskExecutionListener,它将用于在任务执行期间添加我们还定义了一个jobRegistryBeanPostProcessor,用于将作业注册表添加到应用程序上下文中。我们还定义了一个jobLauncher,它将用于在任务执行期间启动作业。最后,我们定义了一个transactionManager和defaultTaskConfigurer,它们将用于配置任务存储库和事务管理。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建Spring Cloud Task
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档