Spring Integration调用Spring Batch

时间:2017-01-27 01:35:48

标签: spring-boot spring-integration spring-batch

如果其他人已经解决了这种模式,只需寻找一些信息。我想一起使用Spring Integration和Spring Batch。这两个都是SpringBoot应用程序,理想情况下我希望将它们和它们各自的配置分开,因此它们都是它们自己的可执行jar。我在他们自己的进程空间中执行它们时遇到问题,我相信我想要,除非有人能说服我,否则每个人都会像他们自己的Spring Boot应用程序一样运行并使用自己的配置文件和属性进行初始化。我遇到的麻烦是从我的SpringIntegration项目中调用SpringBatch项目中的作业。起初我无法从批处理项目中获取属性,所以我意识到我需要将spring.active.profiles作为作业参数传递,这似乎解决了这个问题。但是Spring Boot Batch应用程序中还有其他东西没有像schema-platform.sql文件那样正确加载,并且数据库没有初始化等等。

在这个作业的初始启动时,我可能希望响应返回到Spring Integration,以获取有关作业状态的一些消息。有时我可能希望在没有Spring Integration开始工作的情况下运行工作,但仍然可以利用将状态发送回Spring Integration项目,从而提供对通道或其他内容的监听。

我已经审查了很多Spring样本并且还没有找到我的确切场景,大多数是在同一个项目中有两个依赖项,所以也许我做了一些不可能做到的事情,但我确定我在Spring配置中遗漏了一些东西。

我的问题是:

  • 我不希望Spring Integration项目知道SpringBatch配置的任何内容,而不是它开始的工作。我找到了一种很好的方法来完成对Job Bean的引用而不需要加载我的整个批处理配置。
  • 我应该将这两个项目分开,还是将它们组合起来更好,因为我们之间有双向沟通。
  • 如何从集成项目启动作业。我们正在使用JobLaunchRequest和JobLauncher的spring-batch-integration项目。这似乎在与Spring Integration项目相同的过程中运行它,并且我错过了很多我的SpringBootBatch项目初始化
  • 我是否应该使用CommandLineRunner来强制它进入另一个进程。
  • SpringApplication.run(BatchConfiguration.class)是答案吗?

寻找一些符合这些要求的一般项目配置设置。

1 个答案:

答案 0 :(得分:0)

Spring Cloud数据流与Spring Cloud Task结合使用完全符合您的要求。它将Spring Cloud Task应用程序(可以包含批处理作业)作为您选择的平台上的新进程启动。我建议您在此处查看该项目:http://cloud.spring.io/spring-cloud-dataflow/