活动工作流引发了ActivityTaskTimedOut,但该进程仍在运行。

0

【以下的问题经过翻译处理】 你好, 我们目前有一些长时间运行的流程/任务,通过工作流程来执行。工作流实现会调用任务来运行。调用和任务是异步运行的。默认情况下,我们将活动工作流设定为一小时后超时。 最近我们遇到了一个问题,如果一个任务运行的时间超过一个小时,SWF会在我们的工作流实现中抛出一个ActivityTaskTimedOutException异常。我们期望这也应该导致长时间运行的任务停止,但实际上只有工作流实现捕获了这个异常,任务仍然在后台继续运行。 我的问题是,为什么这没有终止长时间运行的进程?这是SWF超时处理的问题,还是我们需要在我们的实现中检查这些超时异常并终止进程?如果是后者,是否有任何关于如何实现的指导? 我们非常需要帮助,因为我们已经在寻找这个问题的解决方案有一段时间了。 谢谢!

profile picture
专家
已提问 5 个月前12 查看次数
1 回答
0

【以下的回答经过翻译处理】 Java没有提供一种方法来终止执行活动的线程。因此,实际的活动实现不会在超时时停止。这是实现的责任,确保不超过超时时间。建议从长时间运行的活动中心跳,以确保在工人崩溃时及时超时。它还有助于活动清理,因为心跳方法如果活动已超时或已取消则会抛出异常。请参阅“活动心跳”一节,https://docs.aws.amazon.com/amazonswf/latest/awsflowguide/errorhandling.html#test.cancellation.resources

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则