如何通过停止mssql数据库强制拦截批量执行时查找加载的记录的状态

问题描述 投票:1回答:1

我们正在为数据库实现连接或刷新重试逻辑。自动提交= TRUE;

RetryPolicy retryPolicy = new RetryPolicy()
                .retryOn(DataAccessException.class)
                .withMaxRetries(maxRetry)
                .withDelay(retryInterval, TimeUnit.SECONDS);

            result = Failsafe.with(retryPolicy)
                .onFailure(throwable -> LOG.warn("Flush failure, will not retry. {} {}"
                    , throwable.getClass().getName(), throwable.getMessage()))
                .onRetry(throwable -> LOG.warn("Flush failure, will retry. {} {}"
                    , throwable.getClass().getName(), throwable.getMessage()))
                .get(cntx -> {
                    return batch.execute();
                });

我们希望通过在后端停止mssql db服务来拦截存储,更新,插入,删除记录。在某些时候,即使我们得到org.jooq.exception.DataAccessException,批处理中的一些记录(批处理的子集)也会加载到db中。

有没有办法使用jooq api找到失败和成功加载的记录?

java database jooq
1个回答
0
投票

jOOQ API无法帮助您开箱即用,因为这样的功能肯定超出了相对较低级别的jOOQ API的范围,这有助于您编写类型安全的嵌入式SQL。它不会对您的业务逻辑或基础架构逻辑做出任何假设。

理想情况下,您将在此处运行自己的诊断程序。例如,您已经有一个BATCHID列,可以检测哪些记录是使用哪个进程插入/更新的。当你重新运行批处理时,你需要检测你已经尝试过这个批处理,记住以前的BATCHID,并获取之前尝试做的IDs,以便在重新运行之前做任何需要做的事情。

© www.soinside.com 2019 - 2024. All rights reserved.