我有一个场景,我必须使用JOB发出HTTP请求。 该作业将为不同的作业参数发出HTTP请求。 可以有多个相同类型的作业但具有不同的作业参数。 此外,我想以表格格式显示已启动作业,已完成作业,暂停作业的详细信息,我可以在其中看到作业报告
我可以使用哪个弹簧模块?
1. Spring Task Executor / Task Scheduler 它有启动/暂停功能吗? 我可以使用不同的作业参数创建多个作业实例吗? 我可以获得以前工作的详细信息(状态,开始时间,结束时间等)吗?
2. 春季批次 我从spring批处理中理解的是,它用于从数据库读取数据,处理它,写入某些输出流。 在我的情况下,我想从数据库中读取数据并使用该数据我必须向某个服务器发出HTTP请求(我不必将其写入任何输出流)。 是否有可能在Spring批次中?如果是,那么如何?
或者还有其他办法吗?
请帮帮我。 我是Spring Batch和Job框架的新手 在此先感谢。
答案 0 :(得分:0)
对于Spring Batch,您可以编写一个发出HTTP请求的ItemProcessor或ItemWriter。 Spring Batch并不关心数据源或目标是什么。对于ItemWriter,您只需要编写一个实现ItemWriter的类。它可以做任何你想要的。您可以使用Spring的RESTTemplate来发出HTTP请求。
关于批处理的事情是它真的喜欢逐个项目(或逐行)处理事情。
您还可以考虑Spring Integration或Apache Camel。
一个真正简单的ItemWriter:
public class HttpItemWriter implements ItemWriter {
@Autowired
private RestTemplate restTemplate;
@Override
public void write(List objects) throws Exception {
for(Object item : objects) {
restTemplate.postForObject(...)'
}
}
}
配置:
<job id="job1">
<step id="step1">
<tasklet>
<chunk>
<reader><b:bean class="SomeReader"/></reader>
<writer><b:bean class="HttpItemWriter"/></writer>
</chunk>
</tasklet>
</step>
</job>
我不会告诉你如何做每一步,但这应该有希望让你开始。看看http://www.javacodegeeks.com/2015/03/spring-batch-tutorial.html