当前位置: 首页 > 知识库问答 >
问题:

Spring Boot-如何检查特定应用程序URL的状态200

卫成和
2023-03-14

这些URL作为尤里卡服务公开,我通过Spring Cloud OpenFeign从其他服务调用服务。

更新2

我接着构建了自己的自定义应用程序来处理这个问题。细节如下,但如果Spring提供了一些开箱即用的东西来实现这一点,我们仍然感兴趣。

app:
  serviceUrls: 
    - "http://car-service/cars?category=sedan"
    - "http://truck-service/trucks"
cron: "0 0 10 * * *"
@Component
@ConfigurationProperties(prefix = "app")
@Getter
@Setter
public class ServiceUrls {
    private String[] serviceUrls;
}

通过cron,计划每天运行一次:

@Component
@RequiredArgsConstructor
@Slf4j
public class ServiceCheckRunner {
    
    private final ServiceHealth serviceHealth;
    
    @Scheduled(cron = "${cron}")
    public void runCheck() {
        serviceHealth.check();
    }
}

这是检查URL是否不返回错误的代码:

@Service
@RequiredArgsConstructor
@Slf4j
public class ServiceHealth {

    private final ServiceUrls serviceUrls;
    private final RestTemplate rest;
    
    public void check() {

        List<String> failedServiceUrls = new ArrayList<>();
        for (String serviceUrl : serviceUrls.getServiceUrls()) {
            try {

                ResponseEntity<String> response = rest.getForEntity(serviceUrl, String.class);
                
                if (!response.getStatusCode().is2xxSuccessful()) {
                    failedServiceUrls.add(serviceUrl);
                }

            } catch (Exception e){
                failedServiceUrls.add(serviceUrl);
            }
            
        }

        // code to send an email with failedServiceUrls.
    }   
}

共有1个答案

庾奇思
2023-03-14

您可以使用Spring Boot Admin来发送电子邮件通知,无论何时注册的客户端将其状态从UP更改为OFFLINE或其他状态。

pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
    <version>2.4.0</version>
</dependency>

Application.Properties

spring.mail.host=smtp.example.com
spring.mail.username=smtp_user
spring.mail.password=smtp_password
spring.boot.admin.notify.mail.to=admin@example.com
 类似资料:
  • 我们的一个Kafka Streams应用程序的StreamThread使用者在生成以下日志消息后进入了僵尸状态: [Consumer Clientid=Notification-Processor-DB9AA8A3-6C3B-453B-B8C8-106BF2FA257D-StreamThread-1-Consumer,GroupID=Notification-Processor]成员notific

  • 嗨,我需要检查siteminder的状态,看看它是否已关闭。我当前的解决方案是在指定的环境中ping siteminder的策略服务器。是否有任何方法可以使用c#检查Siteminder是否正常运行?提前感谢

  • 这是一个启动应用程序。它运行完美,但没有得到输出(它显示我的HTTP状态404错误在浏览器) 波姆。xml 启动类Main方法 控制器在主类后加载 网址:http://localhost:8080/hello输出

  • 我有一个带有状态按钮的长表: 我需要找到一个具有btn危险类的未满足按钮,它还有一个相邻的N/a按钮(具有btn材料类),然后单击N/a按钮。 我有点迷失在柏树的所有选项中,比如得到、找到、在里面等等。 我可以找到其中一个按钮,但不确定最好的方法是如何验证它旁边还有一个额外的按钮,并且两个按钮都有预期的类。 我的问题是我需要找到一个按钮,它有一个特定的类,与另一个按钮相邻,它有一个特定的类。Psu

  • 问题内容: 我认为这将是提出这个问题的适当社区。 当苹果在夏天召开开发者大会时,我知道他们将使Swift开源。 我的印象是Xcode不会移植到Linux,但我理解某些实体会创建一个模仿Xcode的开发程序。 因此,我想知道这种情况下的新发展。 是否有人对这个主题有更多的最新知识或对此有任何经验? 问题答案: 这里有一个误会。 Swift 的编程语言 是开源的。 这并不意味着Linux上可以使用iO

  • 我正在使用以下代码: 这是我获取证书列表的方式: Google.pem、Google.int.pem、Google.root.pem分别是在浏览器中使用导出选项获得的端证书、中间证书和根证书。 密钥:Sun EC公钥,256位公用x Coord:46177506158937302063723158048612066903199153823785912505310712717097913459047