Spring 启动 JPA PostgreSQL 重试策略

Spring Boot JPA PostgreSQL Retry Policy

我有一个 spring-boot 应用程序,它有一个 POST REST API,实习生使用 JPA 和 Hikari 将数据插入 Postgresql。由于 Post 请求数量巨大,我计划实施 Spring 重试 JPA 内置方法,如 save()、saveAll()、findAll() 等,

我的问题是,当数据库出现 time-out/connection 故障时重试是否是个好主意? (要么) spring-boot 或 JPA 已经这样做了吗?如果是这样,请分享提到这一点的参考资料。

为您提供健康连接的责任是不断监视可用连接的连接池。在将连接移交给您之前,HikariCP 使用测试查询或 API 测试连接(如果 jdbc 驱动程序是 JDBC4 兼容的)。更多信息 here and here.

但是,一旦连接被移交并且如果在执行查询时出现网络问题,客户端将得到一个 Execption。那么重试是个好主意吗? 我认为对于读取查询这应该没问题,但对于更改数据的查询可能不好。例如,您的插入成功,但在客户端获得事务提交的确认之前,发生了网络问题。所以现在数据被插入了。如果您再试一次,您将最终插入两次。