我正在构建一个执行数据库进程的 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/