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
Spring Batch @EnableBatchIntegration 注解的更多相关文章
- Spring Batch @SpringBatchTest 注解
Spring Batch 提供了一些非常有用的工具类(例如 JobLauncherTestUtils 和 JobRepositoryTestUtils)和测试执行监听器(StepScopeTestEx ...
- Spring Batch在大型企业中的最佳实践
在大型企业中,由于业务复杂.数据量大.数据格式不同.数据交互格式繁杂,并非所有的操作都能通过交互界面进行处理.而有一些操作需要定期读取大批量的数据,然后进行一系列的后续处理.这样的过程就是" ...
- Spring Batch实践
Spring Batch在大型企业中的最佳实践 在大型企业中,由于业务复杂.数据量大.数据格式不同.数据交互格式繁杂,并非所有的操作都能通过交互界面进行处理.而有一些操作需要定期读取大批量的数据,然后 ...
- spring batch (四) Job的配置及配置文件说明介绍
内容来自<Spring Batch 批处理框架>,作者:刘相.我只是个搬运工. 一.Spring Batch提供了独立的标签用来顶一个Job配置,分别是job.step.tasklet.c ...
- Spring Batch JSR-305 支持
本发布版本中为 JSR-305 支持添加了一个注解.这个为了与 Spring 框架中的 Null-safety 注解取得平衡,然后为 Spring Batch 添加为 public APIs. 这个 ...
- Spring batch的学习
Spring batch是用来处理大量数据操作的一个框架,主要用来读取大量数据,然后进行一定处理后输出成指定的形式. Spring batch主要有以下部分组成: JobRepository ...
- spring batch的使用和定时器Quart的使用
Spring Batch是一个基于Spring的企业级批处理框架,它通过配合定时器Quartz来轻易实现大批量的数据读取或插入,并且全程自动化,无需人员管理. 在使用spring batch之前,得对 ...
- Spring Batch(4): Job具体解释
第四章 配置作业Job 4.1 基本配置 Job的配置有3个必须的属性.name,jobRepository,steps.一个简单的Job配置例如以下: <job id="footba ...
- Spring Boot整合Spring Batch
引言 Spring Batch是处理大量数据操作的一个框架,主要用来读取大量数据,然后进行一定的处理后输出指定的形式.比如我们可以将csv文件中的数据(数据量几百万甚至几千万都是没问题的)批处理插入保 ...
随机推荐
- django使用session缓存Redis
首先安装redis包 pip install django-redis-sessions 然后在settings中设置 SESSION_ENGINE = 'redis_sessions.session ...
- linux内核中的最简单的输入输出调度算法noop
1. noop是什么? noop是一种输入输出调度算法 2. noop的别称 又称为电梯调度算法 3. noop原理是怎样的? 将输入输出请求放到一个FIFO队列中,然后按次序执行队列中的输入输出请求 ...
- LIS|计蒜客2019蓝桥杯省赛 B 组模拟赛(一)
#include <bits/stdc++.h> using namespace std; const int N = 1e5 + 9; int f[N], a[N]; int n; // ...
- 【教程】Git在Eclipse中的安装和基本使用
一.安装 点击 Help->Install New Software->add 安装地址为:http://download.eclipse.org/egit/updates/ 选择插件 ...
- 用js互相调用iframe页面内的js函数
http://www.jb51.net/web/18555.html 1,首先获得右栏iframe对象 var frames=document.getElementById("frameid ...
- P3605 [USACO17JAN]Promotion Counting晋升者计数
思路 线段树合并的板子.. 和子节点合并之后在值域线段树上查询即可 代码 #include <cstdio> #include <algorithm> #include < ...
- Component 父子组件关系
我们把组件编写的代码放到构造器外部或者说单独文件 我们需要先声明一个对象,对象里就是组件的内容. var zdy = { template:`<div>Panda from China!& ...
- SE91 SAP消息类型
SE91 SAP消息类型 E:Error W:Warning I :Information A :Abortion S :Success 标准 : MESSAGE ID sy-msgid TYPE ...
- HDU 3401 Trade(斜率优化dp)
http://acm.hdu.edu.cn/showproblem.php?pid=3401 题意:有一个股市,现在有T天让你炒股,在第i天,买进股票的价格为APi,卖出股票的价格为BPi,同时最多买 ...
- Maven Web项目解决跨域问题
跨域问题目前笔者所用到的方案大致有三种:jsonp,SpringMVC 4以上注解方式和cros三方过滤器. Jsonp JSONP(JSON with Padding)是一个非官方的协议,它允许在服 ...