【springboot笔记】程序可用性检测ApplicationAvailability

1.背景

springboot-3.1.5 ApplicationAvailability LivenessState ReadinessState AvailabilityChangeEvent
我们可以通过ApplicationAvailability获取当前应用程序的可用性,这个可用性包括ApplicationContext和对外请求路由两种。
LivenessState 是表示ApplicationContext的状态
ReadinessState 是表示路由请求是否可使用的状态
在这里插入图片描述
可以解决的问题:
在应用程序内对ApplicationContext和路由请求是否正常运行进行监听
使用场景:
通过监听ReadinessState状态,判断服务是否启动成功,然后通过飞书或者钉钉或者企业微信进行服务重启通知

监听服务是否可用

@Component
public class ApplicationAvailabilityExporter {@EventListenerpublic void onStateChange(AvailabilityChangeEvent event) {AvailabilityState state = event.getState();if (state.equals(ReadinessState.ACCEPTING_TRAFFIC)) {System.out.println("应用程序已经可以接受外部请求");} else if (state.equals(ReadinessState.REFUSING_TRAFFIC)) {// kill -9 pid (强杀) 不会触发// kill -2 pid (退出信号通知)可以出发System.out.println("应用程序拒绝接受外部请求");} else if (state.equals(LivenessState.BROKEN)) {System.out.println("ApplicationContext未就绪");} else if (state.equals(LivenessState.CORRECT)) {System.out.println("ApplicationContext已构建完成处于就绪");}}
}

注意事项

PostContruct,CommandLineRunner,ApplicationRunner。
这三个都能用来处理一些业务配置等初始化的问题,其中PostContruct是在ApplicationContext的构建阶段,也就是BROKEN阶段,这个时候ApplicationContext还没有构建完成,而CommandLineRunner和ApplicationRunner是在CORRECT和REFUSING_TRAFFIC阶段,这也就意味ApplicationContext已经构建完成但是路由请求还没进来。

所以一般业务数据和配置的缓存建议放在CommandLineRunner和ApplicationRunner中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/151385.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

打开文件 和 文件系统的文件产生关联

补充1:硬件级别磁盘和内存之间数据交互的基本单位 OS的内存管理 内存的本质是对数据临时存/取,把内存看成很大的缓冲区 物理内存和磁盘交互的单位是4KB,磁盘中未被打开的文件数据块也是4KB,所以磁盘中页帧也是4KB,内存…

吴恩达《机器学习》8-7:多元分类

在机器学习领域,经常会遇到不止两个类别的分类问题。这时,需要使用多类分类技术。本文将深入探讨多类分类,并结合学习内容中的示例,了解神经网络在解决这类问题时的应用。 一、理解多类分类 多类分类问题是指当目标有多个类别时…

Vue3 常用组件

一、Fragment组件 Vue2 的template 模板中必须要有一个根标签,而我们在Vue3 的模板中不需要使用根标签就能渲染,因为Vue3 在内部会将多个标签包含在一个Fragment 虚拟元素中。 好处就在于可以减少标签的层级,减小内存占用。 二、Teleport组…

使用cli批量下载GitHub仓库中所有的release

文章目录 1\. 引言2\. 工具官网3\. 官方教程4\. 测试用的网址5\. 安装5.1. 使用winget安装5.2. 查看gh是否安装成功了 6\. 使用6.1. 进行GitHub授权6.1.1. 授权6.1.2. 授权成功6.2 查看指定仓库中的所有版本的release6.2.1. 默认的30个版本6.2.2. 自定义的100个版本6.3 下载特定…

springboot实现在线人数统计

在线人数统计 笔者做了一个网站,需要统计在线人数。 在线有两种: 一、如果是后台系统如果登录算在线,退出的时候或者cookie、token失效的时候就算下线 二、如果是网站前台,访问的时候就算在线 今天我们来讲一下第2种情况&…

大数据HCIE成神之路之数学(3)——概率论

概率论 1.1 概率论内容介绍1.1.1 概率论介绍1.1.2 实验介绍 1.2 概率论内容实现1.2.1 均值实现1.2.2 方差实现1.2.3 标准差实现1.2.4 协方差实现1.2.5 相关系数1.2.6 二项分布实现1.2.7 泊松分布实现1.2.8 正态分布1.2.9 指数分布1.2.10 中心极限定理的验证 1.1 概率论内容介绍…

PostgreSQL基于Citus实现的分布式集群

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

MongoDB相关基础操作(库、集合、文档)

文章目录 一、库的相关操作1、查看数据库2、查看当前库3、创建数据库4、删除数据库 二、集合的相关操作1、查看库中所有集合2、创建集合2.1、显示创建2.2、隐式创建 3、删除集合 三、文档的相关操作1、插入文档1.1、插入单条文档1.2、插入多条文档1.3、脚本方式 2、查询文档3、…

python 就是随便玩玩,生成gif图,生成汉字图片,超级简单

文章目录 主方法调用LetterDrawingWordDoingImage 上图 你也想玩的话,可以直接上码云去看 码云链接 主方法调用 import analysisdata.WordDoingImage as WordDoingImage import analysisdata.LetterDrawing as LetterDrawingif __name__ __main__:# 输入的文本&a…

预约按摩小程序功能及使用指南;

小程序预约按摩功能及使用指南: 1. 注册登录:用户可选择通过账号密码或微信一键登录,便捷注册,轻松管理预约服务。 2. 查找店铺:展示附近的按摩店铺信息,用户可根据需求选择合适的店铺进行预约。 3. 选择服…

【运维篇】5.4 Redis 并发延迟检测

文章目录 0.前言Redis工作原理可能引起并发延迟的常见操作和命令并发延迟检测分析和解读监控数据:优化并发延迟的策略 1. 检查CPU情况2. 检查网络情况3. 检查系统情况4. 检查连接数5. 检查持久化 :6. 检查命令执行情况 0.前言 Redis 6.0版本之前其使用单…

Java 算法篇-链表的经典算法:判断回文链表、判断环链表与寻找环入口节点(“龟兔赛跑“算法实现)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 链表的创建 2.0 判断回文链表说明 2.1 快慢指针方法 2.2 使用递归方式实现反转链表方法 2.3 实现判断回文链表 - 使用快慢指针与反转链表方法 3.0 判断环链表说明…

设计模式-迭代器模式-笔记

动机(Motivaton) 在软件构建过程中,集合对象内部结构常常变化各异。但对于这些集合对象,我们呢希望在不暴露其内部结构的同时,可以让外部客户代码透明地访问其中包含的元素;同时这种“透明遍历”也为“同一…

记一次攻防实战渗透

经典开局一个登录框 由于漏洞应该还未修复。对于数据和相关网址打个码见谅一下 常规思路(爆破) 常规操作进行一波 尝试弱口令然后开始爆破 对于此种有验证码的爆破,可以借用一个bp插件。 captcha-killer-modified-jdk14.jar 具体使用我就…

游戏报错d3dcompiler_47.dll缺失怎么修复,总结多种修复方法

在使用这些软件和游戏的过程中,我们常常会遇到一些问题,其中之一就是d3dcompiler_47.dll丢失的问题。这个问题可能会导致软件或游戏无法正常运行,给用户带来困扰。本文将详细介绍解决软件游戏d3dcompiler_47.dll丢失的方法,帮助您…

地推团队怎么接一手app拉新项目?这几个接单平台可以试试看

首推平台:“聚量推客” 有粉丝问我: 我在五线小城市做地推,有个10人的地推团队,怎么接到一手靠谱的单子? 其实不止一个粉丝在后台问我,做地推、充场的人都在找单子,做这个行业就没有不缺项目的…

【C++】基础语法(中)

C基础语法(中) 文章目录 C基础语法(中)01数组一维数组数组初始化注意访问练习1练习2练习3普通做法:优化reverse函数练习4 多维数组清空数组memsetmemcpy 数组的部分由上到下,按规律 蛇形矩阵技巧 02 字符串…

《QT从基础到进阶·二十九》QT,opencv源码调试

有时候我们在使用VS调试程序的bug,但发现程序崩溃的地方并不在我们写的程序中,我们通过调用堆栈发现程序崩溃的地方出现在QT或者opencv等源码中,那么我们怎么能把断点打到这些开源库中,下面提供一种办法: 解决方案–右…

C语言——写一个函数,每调用一次这个函数,就会将num的值增加1

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>void Add(int* p) {(*p); // 的优先级高于* } int main() {int num0;Add(&num);printf("第一次调用:num %d\n",num);Add(&num);printf("第二次调用:num %d\n",num);Add(&num);p…

【Spring】之注解存取Bean对象

在本系列的上一篇文章中&#xff0c;我们已经了解了Spring的一些核心概念&#xff0c;并且还学习了Spring存取。但是我们发现在存取的过程中还是比较复杂&#xff0c;接下来我们将学习更为简单的Spring存取&#xff0c;其中涉及到的主要内容就是注解。并且在Spring家族的学习过…