javascript
Spring Batch @EnableBatchIntegration 注解
2019獨角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
設(shè)置一個遠(yuǎn)程分塊任務(wù)需要定義一系列的 beans:
- 一個連接工程來從消息中間件中獲得連接,消息中間件包括有(JMS,AMQP 和其他)
- 一個?MessagingTemplate? 來從主向從發(fā)送消息,然后再次發(fā)送回來
- 為 Spring 整合從消息中間件中獲得消息來創(chuàng)建一個輸入和輸出通道
- 一個特殊的內(nèi)容寫(item writer)(ChunkMessageChannelItemWriter)在主機(jī)側(cè),這樣真多處理和寫入能夠知道如何發(fā)送分塊數(shù)據(jù)到工作機(jī)
- 在工作機(jī)側(cè)的消息監(jiān)聽器(ChunkProcessorChunkHandler)來從主機(jī)上接受數(shù)據(jù)
這個在第一次看來的時候好像非常復(fù)雜,并且是一個艱巨的任務(wù)。在新發(fā)布的版本中我們介紹使用注解?@EnableBatchIntegration?來作為一個新的 API(RemoteChunkingMasterStepBuilder?和?RemoteChunkingWorkerBuilder) 來簡化配置。下面的示例顯示了如何使用新的注解和 API:
?
@Configuration @EnableBatchProcessing @EnableBatchIntegration public?class?RemoteChunkingAppConfig {@Autowiredprivate?RemoteChunkingMasterStepBuilderFactory masterStepBuilderFactory;@Autowiredprivate?RemoteChunkingWorkerBuilder workerBuilder;@Beanpublic?TaskletStep masterStep() {return?this.masterStepBuilderFactory.get("masterStep").chunk(100).reader(itemReader()).outputChannel(outgoingRequestsToWorkers()).inputChannel(incomingRepliesFromWorkers()).build();}@Beanpublic?IntegrationFlow worker() {return?this.workerBuilder.itemProcessor(itemProcessor()).itemWriter(itemWriter()).inputChannel(incomingRequestsFromMaster()).outputChannel(outgoingRepliesToMaster()).build();}// Middleware beans setup omitted }?
這個新的注解和構(gòu)造器配置了?beans 中最難配置的部分?,F(xiàn)在你可以非常容易的配置主機(jī)和 Spring 整合到工作機(jī)。你可以找到遠(yuǎn)程分塊示例。用戶在這個示例中使用了?samples module?API,有關(guān)更多細(xì)節(jié)的內(nèi)容請參考?Spring Batch Integration?章節(jié)。
與遠(yuǎn)程快配置簡單化一樣,這個新的版本將會介紹新的 API 來簡化遠(yuǎn)程分區(qū)設(shè)置:RemotePartitioningMasterStepBuilder?和?RemotePartitioningWorkerStepBuilder。
這些可以自動重寫你的配置類,如果?@EnableBatchIntegration?出現(xiàn)了的話,具體的示例代碼請參考下面的示例:
@Configuration @EnableBatchProcessing @EnableBatchIntegration public class RemotePartitioningAppConfig {@Autowiredprivate RemotePartitioningMasterStepBuilderFactory masterStepBuilderFactory;@Autowiredprivate RemotePartitioningWorkerStepBuilderFactory workerStepBuilderFactory;@Beanpublic Step masterStep() {return this.masterStepBuilderFactory.get("masterStep").partitioner("workerStep", partitioner()).gridSize(10).outputChannel(outgoingRequestsToWorkers()).inputChannel(incomingRepliesFromWorkers()).build();}@Beanpublic Step workerStep() {return this.workerStepBuilderFactory.get("workerStep").inputChannel(incomingRequestsFromMaster()).outputChannel(outgoingRepliesToMaster()).chunk(100).reader(itemReader()).processor(itemProcessor()).writer(itemWriter()).build();}// Middleware beans setup omitted }有關(guān)這個新注解的更多細(xì)節(jié),請參考?Spring Batch Integration?章節(jié)中的內(nèi)容。
https://www.cwiki.us/display/SpringBatchZH/@EnableBatchIntegration+Annotation
轉(zhuǎn)載于:https://my.oschina.net/u/2344080/blog/3003551
總結(jié)
以上是生活随笔為你收集整理的Spring Batch @EnableBatchIntegration 注解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我想说的是
- 下一篇: gradle idea java ssm