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模块可以使用这种机制来可视化处理状态.

点赞