gpt4 book ai didi

java - 如何检查 JAVA 代码(持续存在于数据库中)是否正确完成或突然终止?

转载 作者:行者123 更新时间:2023-12-01 17:33:22 24 4
gpt4 key购买 nike

我有一项服务可以在 SQL Server 中保留一些数据。我保留的 2 个字段名为

is_valid 这只是一个安全检查,以防我们将来需要使当前服务运行(以及它保存在数据库中的任何数据)失效。

另一个字段是end_execution_time,它是当前服务结束的时间。

当我启动服务时,我有 is_valid=0end_execution_time=NULL。当运行完成(成功)时,我有 is_valid=1end_execution_time=GETDATETIME()。现在,这是我关心的问题

我有 3 种可能发生的情况 ->

  1. 服务运行失败。代码知道运行失败。因此,我们在数据库中更新 is_valid = 0end_execution_time 保持为 NULL。
  2. 由于某种原因,运行失败,代码也停止工作(有点像终端中的 Ctrl-C)。 is_valid 最初的值为 0。它仍然保持为零。 end_execution_time 保持为 NULL。
  3. 某些运行处于 Activity 状态。现在 is_valid 为 0。end_execution_time 为 NULL。

将来,我如何检查当前某些服务是否正在进行或已突然终止?

无法区分第二种情况和第三种情况。请帮帮我。我正在使用 Spring-Mybatis 和 Java/Kotlin

最佳答案

如果您可以修改服务代码,您可以执行以下一些操作来帮助区分第二种情况和第三种情况。

1) 检查长时间运行的服务调用并使其过期。假设某个时间间隔(1 分钟?)内的调用已停止。使用开始时间和日期差异来实现此目的。

2) 使用 try/catch/finally 的 FINALLY 部分在服务调用失败时更新数据库。

3) 将服务调用实现为异步服务调用,如下所述:http://wiki.eclipse.org/Jetty/Feature/Continuations#Jetty_6_Continuations我知道您没有使用 Jetty,但听起来您需要在更新数据库的服务调用上设置超时。

我不知道如何在不修改代码的情况下解决您的问题。

祝你好运!

关于java - 如何检查 JAVA 代码(持续存在于数据库中)是否正确完成或突然终止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61081441/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com