Java 我可以在Spring引导应用程序中运行长任务吗?

Java 我可以在Spring引导应用程序中运行长任务吗?,java,spring,spring-boot,spring-batch,batch-processing,Java,Spring,Spring Boot,Spring Batch,Batch Processing,我有一个Spring引导应用程序,它在AngularJS页面上显示MongoDB中的一些数据,并允许用户对其进行更改 现在我需要创建一个机制,它允许我 运行一个长(1-3小时)的Java方法 它会生成一些文件和 通过web观察其状态(是否运行、是否完成、是否崩溃?) 我可以在Spring Boot应用程序的范围内实现这一点吗?如果是,我可以使用Spring的哪些部分来实现这一点?我认为将批处理嵌入到您的服务中不是一个好主意 我将创建独立的批处理应用程序如果您使用Spring stack,这将是自

我有一个Spring引导应用程序,它在AngularJS页面上显示MongoDB中的一些数据,并允许用户对其进行更改

现在我需要创建一个机制,它允许我

  • 运行一个长(1-3小时)的Java方法
  • 它会生成一些文件和
  • 通过web观察其状态(是否运行、是否完成、是否崩溃?)

  • 我可以在Spring Boot应用程序的范围内实现这一点吗?如果是,我可以使用Spring的哪些部分来实现这一点?

    我认为将批处理嵌入到您的服务中不是一个好主意

    我将创建独立的批处理应用程序如果您使用Spring stack,这将是自然选择。您需要弄清楚如何托管Spring批处理作业,以及如何触发和调度它Spring批处理需要SQL存储其元数据

    批处理的状态可以由另一个在Servlet容器上运行的应用程序监控。如果将此应用程序指向Spring批处理作业应用程序的SQL存储,则可以通过现成的web UI监控状态

    当然,它可以用Spring Boot运行每个应用程序

    如果您不想处理它给三个应用程序带来的这种操作复杂性,您仍然可以将所有三个应用程序嵌入到一个应用程序中,并且它可以与Spring Boot一起正常工作。您甚至可以手动执行带有参数的作业,或者通过配置为访问SpringBatch作业bean的SpringBatch管理重新启动它们


    您还可以探索使用MongoDb作为Spring批处理元数据的存储。但是,Spring批处理应用程序和Spring批处理管理模块需要使用这种机制来可视化处理状态。

    谢谢。关于SQL存储:像H2、Derby或类似的轻量级数据库对于SpringBatch是否足够?是的。尽管您可能希望避免内存中的DB。SpringBatch 100%支持H2或Derby以及存储在文件中。顺便说一句,我已经为我正在编写的下一本书创建了一系列SpringBatch框架示例。示例主要使用Spring Boot和H2作为元数据存储: