首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方法来处理“被杀死”的Java作业?

方法来处理“被杀死”的Java作业?
EN

Stack Overflow用户
提问于 2009-11-29 06:32:24
回答 2查看 263关注 0票数 0

我们的服务器web应用程序将处理REST API请求所请求的作业。

理想情况下,如果服务器在作业过程中死机(即:拔出插头),作业应该在启动时恢复或重新启动。

处理这些作业的一种非常方便的方法是在单独的线程中使用Java 5中的一些并发实用程序类。唯一的问题是,如果出现故障,您需要写下作业详细信息,并创建一个在启动时读取这些详细信息并恢复作业的进程。这似乎是一件痛苦的事情。

另一种方法是使用队列,其中用户发出请求,我们写入队列,然后从队列中读取并执行作业,只有在作业完成时才删除消息。这使得在启动时恢复作业变得很容易,因为服务器将在启动时从队列中读取并恢复进程。

对于这种情况,有没有更好的方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-29 19:29:12

既然您已经指定了REST,那么很明显,您有发出请求并要求结果的客户端。为什么不把确定它们是否已经完成的责任放在客户端自己身上呢?

例如,客户端发出请求。如果它得到一个结果,那么一切都很好。但是,如果客户端检测到服务器已完成(通过HTTP连接上的过早断开),则它可以后退并稍后重试。如果您愿意,您可以实现各种重试策略(例如,在不同的主机上重试,在'n‘重试后放弃等)。

通过这种方式,客户端可以维护它们所需的知识(假设它们无论如何都必须这样做),并且您的服务器是无状态的,这更易于管理。

票数 1
EN

Stack Overflow用户

发布于 2009-11-29 06:46:31

我会使用Quartz (它具有故障转移功能)来管理您的作业。

PS:我宁愿是错的,但是,在读完你最后的问题后,我有一种感觉,你正在构建一些过于复杂或概念错误的东西。有太多建筑的味道了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1813979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档