Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
处理方法";“杀死”;Java工作?_Java_Rest_Concurrency_Jobs - Fatal编程技术网

处理方法";“杀死”;Java工作?

处理方法";“杀死”;Java工作?,java,rest,concurrency,jobs,Java,Rest,Concurrency,Jobs,我们的服务器web应用程序将处理REST API请求所请求的作业 理想情况下,如果服务器在作业期间死亡(即:拔出插头),则作业应在启动时恢复或重新启动 处理这些作业的一种非常方便的方法是在单独的线程中使用Java5中的一些并发实用程序类。唯一的问题是,如果出现故障,您需要写下作业详细信息,并创建一个流程,在启动时读取这些详细信息并恢复作业。这看起来很痛苦 另一种方法是使用一个队列,在该队列中用户发出请求,我们写入队列,然后从队列中读取并执行作业,并且仅在作业完成时删除消息。这使得在启动时恢复作业

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

理想情况下,如果服务器在作业期间死亡(即:拔出插头),则作业应在启动时恢复或重新启动

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

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

有没有更好的方法来解决这个问题

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


附言:我宁愿是错的,但是,读了你最后的问题,我觉得你在构建一些过于复杂或概念错误的东西。IMHO中有太多的架构气味。

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

e、 客户提出请求。如果结果出来,一切都很好。但是,如果客户机检测到服务器已完成(通过HTTP连接上的过早断开连接),则它可以退出并稍后重试。如果愿意,您可以实施各种重试策略(例如,在不同主机上重试,在“n”次重试后放弃等)

通过这种方式,客户机可以维护他们所需要的知识(据推测,他们无论如何都必须这样做),而您的服务器是无状态的,这更易于管理