gpt4 book ai didi

java - 我可以在 Spring Boot 应用程序中运行长任务吗?

转载 作者:搜寻专家 更新时间:2023-11-01 03:35:31 26 4
gpt4 key购买 nike

我有一个 Spring Boot 应用程序,它在 AngularJS 页面上显示来自 MongoDB 的一些数据并允许用户更改它。

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

  1. 运行长时间(1-3 小时)的 Java 方法,
  2. 生成一些文件和
  3. 通过网络观察其状态(是否运行、是否完成、是否崩溃?)。

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

最佳答案

我认为,将批处理嵌入到您的服务中并公开 MongoDB 数据存储不是个好主意。

我会创建单独的批处理应用程序。 <强> Spring Batch如果您使用的是 Spring 堆栈,那将是自然选择。您需要弄清楚您希望如何托管 Spring Batch 作业以及您希望如何触发和安排它。 Spring Batch 的元数据需要 SQL 存储

批处理的状态可以由另一个应用程序使用 Spring Batch Admin module 监控在 Servlet 容器上运行。如果您将此应用程序指向 Spring Batch 作业应用程序的 SQL 存储,您将开箱即用地通过 Web UI 监控状态

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

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

您还可以探索使用 MongoDb 作为 Spring Batch 元数据的存储。 E.g. this project may help .但是这种机制需要由 Spring Batch 应用程序以及可视化处理状态的 Spring Batch 管理模块使用。

关于java - 我可以在 Spring Boot 应用程序中运行长任务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33053109/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com