我有以下工作要在特定時間間隔或臨時處理。春季批次的批量作業
步驟的工作是:
調用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