Java 如何设置Spring上下文以恢复/处理临时资源故障

Java 如何设置Spring上下文以恢复/处理临时资源故障,java,spring,Java,Spring,春天工作时很凉爽。但我很难理解解决连接的单例间歇性故障/重试问题的最佳方法 让我举两个具体例子: SessionFactory正在连接 Hashicorp保险库正在连接 在这两种情况下,我们都有一个远程服务器,这是相当可靠的,但如果在初始化特定容器类(例如,保存一些Vault机密或SessionFactory的容器类)时发生hiccup,那么我们可以做些什么来重试该类?Spring Vault不提供重试机制。您可以使用一个链接链接到ClientRequestFactory 重试是一种补偿。在

春天工作时很凉爽。但我很难理解解决连接的单例间歇性故障/重试问题的最佳方法

让我举两个具体例子:

  • SessionFactory正在连接
  • Hashicorp保险库正在连接

在这两种情况下,我们都有一个远程服务器,这是相当可靠的,但如果在初始化特定容器类(例如,保存一些Vault机密或SessionFactory的容器类)时发生hiccup,那么我们可以做些什么来重试该类?

Spring Vault不提供重试机制。您可以使用一个链接链接到
ClientRequestFactory

重试是一种补偿。在这种情况下(容器未正确引导/在第一次请求时不健康),看起来您缺少正确的启动和健康检查编排。您假设在应用程序启动时Vault服务正常/已启动,但事实并非如此


重试在某种程度上会有所帮助,但它不是一个解决方案,而是一个补丁。

Spring Vault不提供重试机制。您可以使用一个链接链接到
ClientRequestFactory

重试是一种补偿。在这种情况下(容器未正确引导/在第一次请求时不健康),看起来您缺少正确的启动和健康检查编排。您假设在应用程序启动时Vault服务正常/已启动,但事实并非如此


重试在某种程度上会有所帮助,但它不是一个解决方案,而是一个补丁。

我正在添加故事和场景:我使用spring vault启动我的应用程序,vault容器的启动速度比我的应用程序慢。应用程序通过Vault PropertySource配置调用Vault,但失败。这使我的整个容器和应用程序失败。我在文档中没有看到重试机制选项。是否有一个或将要实施?如果我从错误的角度看这个问题,请改变我的观点:)我正在添加故事和场景:我使用SpringVault启动我的应用程序,vault容器的启动速度比我的应用程序慢。应用程序通过Vault PropertySource配置调用Vault,但失败。这使我的整个容器和应用程序失败。我在文档中没有看到重试机制选项。是否有一个或将要实施?如果我从一个错误的角度来看这个问题,请改变我的观点:)我成功地为问题中的案例实现了重试机制。现在我看到SpringRetry没有处理404错误,我们如何配置RestTemplate或HttpClient在这些HTTP状态下重试?如hc.apache.org/httpclient-3.x/exception-handling.html hc.apache.org/httpclient-3.x/apidocs/org/apache/commons/。我们如何向RetryableVaultTemplate clientHttpRequestFactory提供自定义的HttpMethodRetryHandler?我设法从```覆盖公共Vault响应doWithRetry(RetryContext上下文){logger.debug(“log me doWithRetry”)启用了404的重试机制;VaultResponse response=RetryableVaultTemplate.super.read(path);if(response!=null){return response;}抛出新的RuntimeException(“收到空响应。可能是404”);} }); }```在Vault模板中,read方法正在检查HttpStatus.NOT\u是否找到并返回null。我检查了null,并抛出了一个带有“收到空响应。可能是404”消息的RuntimeException。如果能够捕捉到实际的异常,那就太好了。我如何做到这一点?我成功地为问题中的案例实现了重试机制。现在我看到SpringRetry没有处理404错误,我们如何配置RestTemplate或HttpClient在这些HTTP状态下重试?如hc.apache.org/httpclient-3.x/exception-handling.html hc.apache.org/httpclient-3.x/apidocs/org/apache/commons/。我们如何向RetryableVaultTemplate clientHttpRequestFactory提供自定义的HttpMethodRetryHandler?我设法从```覆盖公共Vault响应doWithRetry(RetryContext上下文){logger.debug(“log me doWithRetry”)启用了404的重试机制;VaultResponse response=RetryableVaultTemplate.super.read(path);if(response!=null){return response;}抛出新的RuntimeException(“收到空响应。可能是404”);} }); }```在Vault模板中,read方法正在检查HttpStatus.NOT\u是否找到并返回null。我检查了null,并抛出了一个带有“收到空响应。可能是404”消息的RuntimeException。如果能够捕捉到实际的异常,那就太好了。我该怎么做?