您现在的位置是:首页 > 文章详情

Spring Batch @EnableBatchIntegration 注解

日期:2019-01-18点击:341

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

原文链接:https://yq.aliyun.com/articles/688149
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章