当前位置: 首页 > 知识库问答 >
问题:

从Spring MVC servlet调度超长运行进程的最佳方法

滑弘扬
2023-03-14

我有一个Java Spring(MVC)servlet,我需要创建一个缓慢、长时间运行的进程,该进程将随着时间的推移在数据库中创建条目。servlet应该提供对数据库内容的视图,以及关于进程状态的一些信息。

这一过程计算量不大,但需要很长时间。很可能在servlet运行时需要重新启动它多次。该过程能够生成检查点,但必须调用已知代码来生成和应用检查点。流程在数据库中创建条目,并且有可能也有必要以这种方式监视其活动。

到目前为止,我考虑的想法如下:

    null

共有1个答案

文志学
2023-03-14

因为您可能会重新启动Servlet,实际上是应用程序,甚至整个容器进程--您应该在当前Servlet/application/container之外安排长期运行的作业。

最好的方法是在另一个进程中安排作业。您可以推出自己的解决方案,但也有一些平台已经实现了这一点,Gearman就是一个例子,Spring XD也是另一个例子。

基本思想是将作业切换到一个作业队列,并让(理想情况下)分布式作业调度程序处理该队列。该调度程序将反过来提供API或事件源来通知(即发布-订阅队列)您的应用程序的进度。

 类似资料:
  • 问题内容: 我有一个Ajax调用,它可以更新数据库中的5,000条记录,因此需要很多时间。我有一个Ajax“正在加载图像”,它表明正在发生某些事情,但是我正在寻找一种更好的方式来显示“正在更新5000中的50 .....”,“正在更新5000中的200”或类似的东西。 在Ajax / jQuery中不做5000篇不同文章的最佳方法是什么? 问题答案: 我认为最好是使用Comet。 在Comet样式

  • 问题内容: 已关闭 。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗? 更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2个月前关闭。 每次设置新的SQL表或向现有表添加新列时,我都想知道一件事:的最佳价值是什么。 假设您有一个名为type 的列。因此,您必须选择长度。我想不出一个名称> 20个字符,但您永远不会知道。但是我总是使用四舍五入到下一个2 ^ n数字,而不是使用20。

  • 我有一个Netty4.x应用程序,它需要发送和接收ASCII消息,从一个固定长度(10位数,零填充)字段开始,包含以#字符为单位的消息大小。消息如下:

  • 我是一个新的Android和工作在这个聊天应用,在那里我想改变一个activity元素基于预定的数据,在预定的确切时间。它不一定要工作时,应用程序或电话关闭,但我想发送通知,以及与更改。有AlarmManager、JobScheduler、Handler、Timer和WorkManager,但我对它们之间的比较感到非常困惑。在这种情况下哪一个是最好的选择?

  • 我遇到了一个问题。我的网页有一个控件。值更改后(通过选择不同的值),页面将刷新并呈现内容。 下面是我的代码: 第二部分:

  • 问题内容: 我正在阅读有关sqlalchemy的信息,并且看到了以下代码: 我应该在库中使用常量将“类型”设置为int吗?还是我应该使枚举成为枚举? 问题答案: SQLAlchemy从0.6开始具有Enum类型:http ://docs.sqlalchemy.org/en/latest/core/type_basics.html?highlight=enum#sqlalchemy.types.En