java – 我可以在Spring Boot应用程序中运行长任务吗?
作者:互联网
我有一个Spring Boot应用程序,它在AngularJS页面上显示来自MongoDB的一些数据,并允许用户更改它.
现在我需要创建一个允许我的机制
>运行一个长(1-3小时)的Java方法,
>产生一些文件和
>通过网络观察其状态(是否运行,是否完成,是否崩溃?).
我可以在Spring Boot应用程序的范围内实现它吗?如果是的话,我可以使用Spring的哪些部分来做到这一点?
解决方法:
我认为将批处理嵌入到暴露MongoDB数据存储的服务中并不是一个好主意.
我会创建单独的批处理应用程序如果您使用Spring堆栈,Spring Batch将是自然的选择.您需要弄清楚如何托管Spring Batch作业以及如何触发和计划它. Spring Batch需要SQL存储才能获得元数据.
批处理的状态可以由另一个应用程序监视,其中Spring Batch Admin module在Servlet容器上运行.如果将此应用程序指向Spring Batch作业应用程序的SQL存储,则可以通过Web UI立即监视状态.
当然它可以使用Spring Boot运行每个应用程序.
如果你不想处理这种操作复杂性,它会带来三个应用程序,你们仍然可以将它们全部嵌入到一个应用程序中,它可以在Spring Boot中正常工作.您甚至可以手动执行带参数的作业,也可以通过配置为可以访问Spring Batch Job bean的Spring Batch Admin重新启动它们.
您还可以使用MongoDb作为Spring Batch元数据的存储进行探索.但是,Spring Batch应用程序以及Spring Batch Admin模块可以使用这种机制来可视化处理状态.
标签:java,spring,spring-boot-2,batch-processing,spring-batch 来源: https://codeday.me/bug/20190706/1398464.html