Spring Batch @EnableBatchIntegration 注解

简介: 设置一个远程分块任务需要定义一系列的 beans:一个连接工程来从消息中间件中获得连接,消息中间件包括有(JMS,AMQP 和其他)一个 MessagingTemplate  来从主向从发送消息,然后再次发送回来为 Spring 整合从消息中间件中获得消息来创建一个输入和输出通道一个特殊...

设置一个远程分块任务需要定义一系列的 beans:

  • 一个连接工程来从消息中间件中获得连接,消息中间件包括有(JMS,AMQP 和其他)
  • 一个 MessagingTemplate  来从主向从发送消息,然后再次发送回来
  • 为 Spring 整合从消息中间件中获得消息来创建一个输入和输出通道
  • 一个特殊的内容写(item writer)(ChunkMessageChannelItemWriter)在主机侧,这样真多处理和写入能够知道如何发送分块数据到工作机
  • 在工作机侧的消息监听器(ChunkProcessorChunkHandler)来从主机上接受数据

这个在第一次看来的时候好像非常复杂,并且是一个艰巨的任务。在新发布的版本中我们介绍使用注解 @EnableBatchIntegration 来作为一个新的 API(RemoteChunkingMasterStepBuilder 和 RemoteChunkingWorkerBuilder) 来简化配置。下面的示例显示了如何使用新的注解和 API:



@Configuration
@EnableBatchProcessing
@EnableBatchIntegration
public class RemoteChunkingAppConfig {

   @Autowired
   private RemoteChunkingMasterStepBuilderFactory masterStepBuilderFactory;

   @Autowired
   private RemoteChunkingWorkerBuilder workerBuilder;

   @Bean
   public TaskletStep masterStep() {
         return this.masterStepBuilderFactory
                         .get("masterStep")
                         .chunk(100)
                         .reader(itemReader())
                         .outputChannel(outgoingRequestsToWorkers())
                         .inputChannel(incomingRepliesFromWorkers())
                         .build();
   }

   @Bean
   public IntegrationFlow worker() {
         return this.workerBuilder
                         .itemProcessor(itemProcessor())
                         .itemWriter(itemWriter())
                         .inputChannel(incomingRequestsFromMaster())
                         .outputChannel(outgoingRepliesToMaster())
                         .build();
   }

   // Middleware beans setup omitted
}


 

这个新的注解和构造器配置了 beans 中最难配置的部分。现在你可以非常容易的配置主机和 Spring 整合到工作机。你可以找到远程分块示例。用户在这个示例中使用了 samples module API,有关更多细节的内容请参考 Spring Batch Integration 章节。

与远程快配置简单化一样,这个新的版本将会介绍新的 API 来简化远程分区设置:RemotePartitioningMasterStepBuilder 和 RemotePartitioningWorkerStepBuilder。

这些可以自动重写你的配置类,如果 @EnableBatchIntegration 出现了的话,具体的示例代码请参考下面的示例:



@Configuration
@EnableBatchProcessing
@EnableBatchIntegration
public class RemotePartitioningAppConfig {
 
   @Autowired
   private RemotePartitioningMasterStepBuilderFactory masterStepBuilderFactory;
 
   @Autowired
   private RemotePartitioningWorkerStepBuilderFactory workerStepBuilderFactory;
 
   @Bean
   public Step masterStep() {
            return this.masterStepBuilderFactory
               .get("masterStep")
               .partitioner("workerStep", partitioner())
               .gridSize(10)
               .outputChannel(outgoingRequestsToWorkers())
               .inputChannel(incomingRepliesFromWorkers())
               .build();
   }
 
   @Bean
   public Step workerStep() {
            return this.workerStepBuilderFactory
               .get("workerStep")
               .inputChannel(incomingRequestsFromMaster())
               .outputChannel(outgoingRepliesToMaster())
               .chunk(100)
               .reader(itemReader())
               .processor(itemProcessor())
               .writer(itemWriter())
               .build();
   }
 
   // Middleware beans setup omitted
}



有关这个新注解的更多细节,请参考 Spring Batch Integration 章节中的内容。

https://www.cwiki.us/display/SpringBatchZH/@EnableBatchIntegration+Annotation

目录
相关文章
|
6月前
|
前端开发 JavaScript IDE
03使用Spring Initializer快速创建Spring Boot项目
03使用Spring Initializer快速创建Spring Boot项目
130 0
|
4月前
|
Java 数据库连接 Maven
【Spring】掌握 Spring Validation 数据校验
【Spring】掌握 Spring Validation 数据校验
124 0
|
4月前
|
Java 数据库连接 API
Springboot实现优雅的参数校验(Spring Validation)和 if else说再见
Springboot实现优雅的参数校验(Spring Validation)和 if else说再见
104 0
|
10月前
|
人工智能 Java 容器
Spring中@Conditional注解详解
Spring中@Conditional注解详解
|
11月前
|
Java 数据库 Spring
Spring Boot2.x-06Spring Boot基础-使用@Conditional注解根据特定的条件装配bean
Spring Boot2.x-06Spring Boot基础-使用@Conditional注解根据特定的条件装配bean
64 0
|
搜索推荐 Java 数据库连接
Spring Data JPA中常用的注解详解
我们先看看类前面的两个注解
162 0
Spring Data JPA中常用的注解详解
|
存储 SQL 缓存
10分钟搞定 Spring 批处理组件 —— spring-batch
Spring Batch 是一个轻量级、全面的批处理框架,旨在支持开发对企业系统的日常运营至关重要的健壮批处理应用程序。Spring Batch 建立在人们所期望的 Spring Framework 的特性(生产力、基于 POJO 的开发方法和一般易用性)之上,同时使开发人员可以在必要时轻松访问和利用更先进的企业服务。Spring Batch 不是调度框架。在商业和开源空间中都有许多优秀的企业调度程序(例如 Quartz、Tivoli、Control-M 等)可用。
2467 2
|
Java Spring 容器
浅谈 Spring Boot 中的 @Conditional 注解
Spring boot 中的 @Conditional 注解是一个不太常用到的注解,但确实非常的有用,我们知道 Spring Boot 是根据配置文件中的内容,决定是否创建 bean,以及如何创建 bean 到 Spring 容器中,而 Spring boot 自动化配置的核心控制,就是 @Conditional 注解。 @Conditional 注解是 Spring 4.0 之后出的一个注解,与其搭配的一个接口是 Condition,@Conditional 注解会根据具体的条件决定是否创建 bean 到容器中,接下来看看 @Conditional 注解的简单使用。
140 0
浅谈 Spring Boot 中的 @Conditional 注解
|
存储 SQL 安全
Spring Boot中Spring data注解的使用
Spring Boot中Spring data注解的使用
|
XML Java 数据格式
spring基于注解的配置
**不管是 XML 还是注解,它们都是表达 Bean 定义的载体,其实质都是为 Spring 容器提供 Bean 定义的信息,在表现形式上都是将 XML 定义的内容通过类注解进****行描述。**Spring 从2.0开始就引入了基于注解的配置方式,在2.5时得到了完善,在4.0时进一步增强。