【问题标题】:How to check if a remote REST service is up using Spring?如何使用 Spring 检查远程 REST 服务是否已启动?
【发布时间】:2020-07-29 09:25:25
【问题描述】:

我有一个使用 SpringBoot 构建的小型 REST 应用程序。我使用 Feign Client 向类似的应用程序发出请求。

我想弄清楚的是如何检查 feign 发出请求的应用程序是否已启动。如果服务器已启动,则有一个路径(api/online)返回 200 OK。 我试图做的是发出一个返回 ResponseEntity 并检查其状态代码的 GET 请求。但是当服务器关闭时,我没有得到任何响应,而是抛出异常。

有没有优雅的方法来做到这一点?

【问题讨论】:

  • when the server is down I don't get any response and instead an Exception is thrown. 请发布您的相关代码。

标签: spring-boot spring-cloud-feign


【解决方案1】:

我认为,要优雅地处理异常,您可以使用带有回退的 circutebreaker。 看看this article

执行器不是一个选项,因为如果应用程序出现故障,执行器将无法正常工作。

还可以看看像 Eurika 这样的发现服务——所以在请求某些东西之前,你假装客户端会检查服务是否启动并通过发现服务运行

【讨论】:

    【解决方案2】:

    通常执行器用于检查 springboot 应用程序的健康状况 - http://localhost:8080/actuator/health。你可以参考这个网站来了解如何实现它们https://www.callicoder.com/spring-boot-actuator/

    【讨论】:

      【解决方案3】:

      所以我将在这里留下我自己的解决方案,即使它感觉有点原始。最后,我所做的是一个简单的尝试和捕获,我检查了请求没有引发异常,如果它确实返回 false,否则我返回 true。 我无法以其他方式解决它,请随意使用其他选项。

      【讨论】:

        猜你喜欢
        • 2012-02-17
        • 1970-01-01
        • 1970-01-01
        • 2017-03-16
        • 2019-11-12
        • 1970-01-01
        • 2021-08-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多