Web 服务中长时间运行进程的 Java 模式

标签 java

我正在构建一个执行数据库进程的 Web 服务(运行多个查询的 SQL 代码,然后在两个非常大的表之间移动数据),我假设某些进程可能需要 2 到 10 个小时才能执行。

从 Java Web 服务中执行长时间运行的数据库进程的最佳实践是什么(它实际上是基于 REST 的,使用 JAX-RS 和 Spring)?该过程将在 1 次 Web 服务调用时执行。预计每周执行一次。

提前致谢!

最佳答案

它必须是异步的。

由于您的 Web 服务调用是 RPC,最好让实现验证请求,将其放入队列中进行处理,并立即发回具有 token 或 URL 的响应以检查进度。

设置一个 JMS 队列并注册一个监听器,该监听器将消息从队列中取出并保留它。

如果这真的需要 2-10 个小时,我建议您查看您的架构和查询,看看是否可以加快速度。某处缺少索引,我敢打赌。

关于Web 服务中长时间运行进程的 Java 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3392554/

相关文章:

java - 如何访问该数组的 itemPrice 部分?

java - 如何使两个具有相同名称、签名和返回类型的方法的类表现得像它们实现相同的接口(interface)一样

java - 错误 java.lang.RuntimeException : java. lang.RuntimeException : com. android.builder.dexing.DexArchiveMergerException:无法合并 dex

java - 扩展通用类的原始类型警告

javascript - 无法从Spring微服务加载javascript文件

java - 方法访问者在 Java ASM VisitLineNumber() 中不起作用

java - 从我的应用程序 : Android 中阻止/取消阻止应用程序

Java 和 Sybase

java - 使用 Spring Boot + Spring data JPA 保存在 JPA 定义中时出现异常

Java 无法解析或不是字段