我有以下工作要在特定时间间隔或临时处理。春季批次的批量作业
步骤的工作是:
调用Twitter的API和收集鸣叫一堆用户,他们在文件中写
从文件中读取它们并处理它们
- 转储加工 结果数据库
我也想要UI,我可以在特定的基础上触发一个工作,而且我应该能够从UI为它提供参数。
想到Spring批处理,但它更多的是读 - >处理 - >写种类的工作。这里第一步是生成第二步读取的数据。不知道我是否仍然可以使用Spring批处理或者有更好的方法。
我有以下工作要在特定时间间隔或临时处理。春季批次的批量作业
步骤的工作是:
调用Twitter的API和收集鸣叫一堆用户,他们在文件中写
从文件中读取它们并处理它们
我也想要UI,我可以在特定的基础上触发一个工作,而且我应该能够从UI为它提供参数。
想到Spring批处理,但它更多的是读 - >处理 - >写种类的工作。这里第一步是生成第二步读取的数据。不知道我是否仍然可以使用Spring批处理或者有更好的方法。
使用spring批处理,你可以设计你的工作的步骤,每一步都有它自己的读者,处理器,作家。
<job id="yourJobID" >
<step id="gatherTweet" next="processTweet">
<tasklet>
<chunk reader="tweetCollector" writer="tweetFileWriter"/>
</tasklet>
</step>
<step id="processTweet">
<tasklet>
<chunk reader="tweetFileWriterReader" processor="tweetProcessor" writer="tweetDataBaseWriter"/>
</tasklet>
</step>
</job>
对于UI启动作业,您可以使用spring batch admin。
或者,您可以使用Java配置您的作业和步骤,而不是使用XML。
例如myJob bean被定义如下,采用step0,第一步和第二步(步骤只是豆太):
// Job Definition //
@Bean
public Job myJob(JobBuilderFactory jobs)
{
return jobs.get("My Twitter Job")
.incrementer(new RunIdIncrementer())
.from(step0()).next(step1()).next(step2())
.end()
.build();
}
...
// Custom ItemReader that is Autowired in //
@Autowired
protected ItemReader<TweetDto> gatherTweetItemReader;
...
@Bean
public Step step0()
{
return steps.get("Step0 - gatherTweet")
.tasklet(gatherTweetItemReader)
.allowStartIfComplete(true) // Always run this step //
.build();
}
// ... Step1 and Step2 definitions ... //
所以读者=“tweetCollector”不读什么这样。我相信,我将不得不将这个作为一个自定义阅读器来写,它实际上会调用Twitter API并收集推文。我可以在Spring批处理中使用这种自定义书写阅读器吗? – Kaunteya
是的,您可以编写实现ItemReader的自定义阅读器。 – hasnae
也许这个例子可以帮助你:http://smarttechie.org/2015/04/04/get-twitter-trends-using-spring-batch/ – hasnae