Spring Cloud Task 集成Spring Cloud Task Batch(一)
2023-06-13 09:18:39 时间
介绍
Spring Cloud Task和Spring Batch都是Spring生态系统中强大的工具。Spring Batch提供了一个框架,用于编写和执行大规模批处理作业,而Spring Cloud Task提供了一种机制,可以将短期的任务作为单独的执行单元来运行。这两个工具在不同的场景下都非常有用,因此将它们结合起来可以提供更广泛的应用程序开发和部署选择。
添加Spring Batch依赖项
在构建文件中,我们需要添加Spring Batch依赖项:
<dependency>
<groupId>org.springframework.batch</groupId>
<artifactId>spring-batch-core</artifactId>
<version>${spring-batch.version}</version>
</dependency>
创建Spring Batch作业
我们将创建一个简单的Spring Batch作业,该作业将读取一个文件,并将文件中的每一行打印到控制台上。首先,我们需要定义一个JobBuilderFactory,并在其中创建一个新的Job:
import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobParametersBuilder;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.item.file.FlatFileItemReader;
import org.springframework.batch.item.file.mapping.PassThroughLineMapper;
import org.springframework.batch.item.file.transform.DefaultFieldSet;
import org.springframework.batch.item.file.transform.FieldSet;
import org.springframework.batch.item.file.transform.LineTokenizer;
import org.springframework.batch.item.file.transform.PassThroughLineTokenizer;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
@Configuration
@EnableBatchProcessing
public class BatchConfiguration {
private final JobBuilderFactory jobBuilderFactory;
private final StepBuilderFactory stepBuilderFactory;
@Value("file:${input.file}")
private Resource inputFile;
public BatchConfiguration(JobBuilderFactory jobBuilderFactory,
StepBuilderFactory stepBuilderFactory) {
this.jobBuilderFactory = jobBuilderFactory;
this.stepBuilderFactory = stepBuilderFactory;
}
@Bean
public FlatFileItemReader<FieldSet> reader() {
FlatFileItemReader<FieldSet> reader = new FlatFileItemReader<>();
reader.setResource(inputFile);
LineTokenizer tokenizer = new PassThroughLineTokenizer();
reader.setLineMapper(new PassThroughLineMapper() {
@Override
public FieldSet mapLine(String line, int lineNumber) throws Exception {
return new DefaultFieldSet(line.split(","), tokenizer.tokenize(line));
}
});
return reader;
}
@Bean
public SimpleItemWriter writer() {
return new SimpleItemWriter();
}
@Bean
public Step step() {
return stepBuilderFactory.get("step")
.<FieldSet, String>chunk(10)
.reader(reader())
.writer(writer())
.build();
}
@Bean
public Job job() {
return jobBuilderFactory.get("job")
.start(step())
.build();
}
}
在这个类中,我们首先定义了一个JobBuilderFactory和StepBuilderFactory,这些工厂类将用于创建作业和步骤。我们还定义了一个Resource属性,该属性将在配置文件中定义,指定输入文件的位置。我们使用@Value注释将输入文件注入到该属性中。
接下来,我们定义了一个FlatFileItemReader,该Reader将用于读取输入文件。我们使用PassThroughLineMapper来指定如何将文件行映射到FieldSet对象中,然后使用DefaultFieldSet将FieldSet对象映射到我们定义的数据对象中。
然后,我们定义了一个SimpleItemWriter,这是一个简单的Writer,将数据输出到控制台上。
最后,我们定义了一个Step,它将使用我们定义的reader和writer来读取和写入数据。
我们还定义了一个Job,它将使用我们定义的Step来运行我们的作业。
相关文章
- Spring Cloud Alibaba新特性篇
- spring cloud gateway 网关认证登录_golang 网关
- Spring 事务失效的几种情况
- Spring Cloud Alibaba 使用 feign 和 rebion 进行服务消费
- Spring Cloud Tencent 1.10.2 版本正式发布!
- Spring Cloud Config 与其他组件集成(一)
- Spring Cloud Config 与其他组件集成(二)
- 集成Eureka与其他Spring Cloud组件
- Spring Cloud Stream核心组件Channel(一)
- 配置Spring Cloud Bus并集成消息代理
- Spring Cloud Bus在服务之间传递自定义事件(二)
- Spring Cloud Bus集成Spring Cloud Config Server实现全局配置的自动刷新(二)
- 将 Spring Cloud Task 集成到 Spring Boot 应用中
- Spring Cloud Task 集成Spring Cloud Stream(二)
- Spring Cloud Task 集成Spring Cloud Task Batch(二)
- Spring Cloud Task 集成Spring Cloud Task Batch(四)
- Spring Cloud Data Flow 的架构和组件
- 配置 Spring Cloud Data Flow 的监控和安全控制
- Spring Cloud Data Flow 和 Spring Cloud Stream 集成实现基于消息驱动的数据流应用程序
- Spring Cloud组件
- spring cloud教程之使用spring boot创建一个应用详解编程语言
- spring的AOP(四)—-Spring AOP 编程(Advisor)详解编程语言
- Spring框架下整合Redis的实现(spring整合redis)
- cloud database突破传统,选择云数据库:Oracle Cloud Database(naloracle)
- MateCloud 4.0.8 正式版发布, Spring Cloud Alibaba 的微服务平台