使用计划在Azure WebJob上运行Spring Boot应用程序

时间:2018-08-15 21:56:35

标签: java spring-boot spring-batch azure-webjobs azure-webjobssdk

我有一个常规的Java / Spring Batch作业,该作业每天晚上运行,以从一个数据库获取数据并在项目的数据库中进行插入/更新。在将其部署在Tomcat上的当前设置中,这可以正常工作。

现在,我需要将其分离出来并在 Azure WebJob 上运行。什么是好的方法?

我可以为此目的使用Spring Boot吗? 但是我不确定它将如何工作。我的意思是,我可以为我的项目(使用Spring Boot编写的作业)创建一个JAR,并将其复制到Azure WebJob上。然后使用“ java -jar ...”创建一个批处理文件,但是:

  • 会不会像使用其内置的网络服务器来运行和部署Spring Boot App一样,一旦我运行它,它将继续运行?
  • 第二,下一次由Azure WebJob根据我设置的时间表执行该批处理文件时,它将尝试再次运行Spring Boot App,并且由于第一次运行时该端口已在使用中,因此我可能会遇到绑定异常。

如果有人可以帮助我做到这一点,我们将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:0)

  

会不会像使用其内置的Web服务器来运行和部署Spring Boot App一样,一旦我运行它,它将继续运行?

Spring Boot应用程序可以是非Web应用程序,而一个很好的例子是不依赖servlet容器的Spring Boot批处理应用程序。

您可以创建一个Spring Boot应用程序,该应用程序运行Spring Batch作业,然后在作业完成时停止运行,而无需将其部署在(嵌入式)Tomcat中。您可以在此处找到示例:https://spring.io/guides/gs/batch-processing/

  

第二,下一次由Azure WebJob按照我设置的时间表执行该批处理文件时,它将尝试再次运行Spring Boot App,并且由于第一次运行时该端口已在使用中,因此我可能会遇到绑定异常

一旦有了使用java -jar mybatchapp.jar运行应用程序的脚本,就可以在需要时使用Azure Scheduler运行作业。由于您的批处理应用程序不包含/启动嵌入式servlet容器,因此不会出现端口冲突。