我有一个常规的Java / Spring Batch作业,该作业每天晚上运行,以从一个数据库获取数据并在项目的数据库中进行插入/更新。在将其部署在Tomcat上的当前设置中,这可以正常工作。
现在,我需要将其分离出来并在 Azure WebJob 上运行。什么是好的方法?
我可以为此目的使用Spring Boot吗? 但是我不确定它将如何工作。我的意思是,我可以为我的项目(使用Spring Boot编写的作业)创建一个JAR,并将其复制到Azure WebJob上。然后使用“ java -jar ...”创建一个批处理文件,但是:
如果有人可以帮助我做到这一点,我们将不胜感激。
谢谢。
答案 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容器,因此不会出现端口冲突。