用于Web服务中长时间运行的Java模式

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

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

提前致谢!

它必须是异步的。

由于您的Web服务调用是RPC,因此最好让实现validation请求,将其放在队列中进行处理,然后立即发送回具有令牌或URL的响应以检查进度。

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

如果这确实需要2-10个小时,我建议您查看架构和查询,看看是否可以加快速度。 我敢打赌,某处有一个指数缺失。

在我工作的地方,我目前正在针对这种情况评估不同的策略,只有时间不同。

根据您所述的时间,使用发布/订阅消息队列( ActiveMQ )可以更好地为您提供服务。