如何在基于java的web应用程序中运行非常长的进程?
我需要在基于java的spring boot web应用程序中运行一个非常长的过程。该过程包括以下步骤如何在基于java的web应用程序中运行非常长的进程?,java,jms,spring-batch,Java,Jms,Spring Batch,我需要在基于java的spring boot web应用程序中运行一个非常长的过程。该过程包括以下步骤 从数据库中获取大约30万用户的详细信息 迭代它们 使用itext为每个用户生成PDF文件 将PDF文件保存在文件系统上 更新已为给定用户创建PDF文件的数据库 更新数据库中用户的PDF路径 现在,整个过程可能需要很多时间。可能需要数小时甚至数天,因为它包括为每个用户创建pdf文件,然后进行大量数据库更新 此外,我需要在后台运行此过程,以便web应用程序的其余部分可以顺利运行 我正在考虑使用Sp
实现这类任务的理想方法是什么?如果你不能说出你希望框架/库满足的需求,那么你很可能不需要一个 生成PDF可能需要很大的能量,您可能希望将此后台进程与您自己机器上的主web应用程序保持距离 如果它是一个简单的java进程,则通常更易于控制和在您的环境中移动它 对我来说,这看起来像是一个简单的java-KISS任务。还是我遗漏了什么 我会确保用于从数据库获取用户的查找器是
- 可重新启动,即仅获取未处理的用户(如果您因为狗屎发生而必须停止处理:-)
- 分批运行,以保持db往返和低负载
- 是多线程的,即可以将用户分成给定数量的线程(userid mod numberOfThreads,假设userid是均匀分布的),以便在必要时添加更多的机器/线程