zoukankan      html  css  js  c++  java
  • Spring Batch @EnableBatchIntegration 注解

    设置一个远程分块任务需要定义一系列的 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

  • 相关阅读:
    字符编码与解码详解
    【Java反射机制】用反射改进简单工厂模式设计
    数据结构
    根据 中序遍历 和 后序遍历构造树(Presentation)(C++)
    【动态规划】记忆搜索(C++)
    Linux环境下安装中山大学东校区iNode客户端
    webpack前端开发环境搭建
    CSS中line-height继承问题
    MySQL中MyISAM与InnoDB的主要区别对比
    JavaScript中易混淆的DOM属性及方法对比
  • 原文地址:https://www.cnblogs.com/huyuchengus/p/10291345.html
Copyright © 2011-2022 走看看