Spring Framework.Creating Jobs(可以启动,暂停,恢复(从暂停的位置))

时间:2015-03-23 14:39:49

标签: spring jobs

我有一个场景,我必须使用JOB发出HTTP请求。 该作业将为不同的作业参数发出HTTP请求。 可以有多个相同类型的作业但具有不同的作业参数。 此外,我想以表格格式显示已启动作业,已完成作业,暂停作业的详细信息,我可以在其中看到作业报告

我可以使用哪个弹簧模块?

1. Spring Task Executor / Task Scheduler 它有启动/暂停功能吗? 我可以使用不同的作业参数创建多个作业实例吗? 我可以获得以前工作的详细信息(状态,开始时间,结束时间等)吗?

2. 春季批次 我从spring批处理中理解的是,它用于从数据库读取数据,处理它,写入某些输出流。 在我的情况下,我想从数据库中读取数据并使用该数据我必须向某个服务器发出HTTP请求(我不必将其写入任何输出流)。 是否有可能在Spring批次中?如果是,那么如何?

或者还有其他办法吗?

请帮帮我。 我是Spring Batch和Job框架的新手 在此先感谢。

1 个答案:

答案 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