我们正在为数据库实现连接或刷新重试逻辑。自动提交= 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找到失败和成功加载的记录?
jOOQ API无法帮助您开箱即用,因为这样的功能肯定超出了相对较低级别的jOOQ API的范围,这有助于您编写类型安全的嵌入式SQL。它不会对您的业务逻辑或基础架构逻辑做出任何假设。
理想情况下,您将在此处运行自己的诊断程序。例如,您已经有一个BATCHID
列,可以检测哪些记录是使用哪个进程插入/更新的。当你重新运行批处理时,你需要检测你已经尝试过这个批处理,记住以前的BATCHID
,并获取之前尝试做的IDs
,以便在重新运行之前做任何需要做的事情。