笔记
5、熔断降级服务异常报警通知实战
简介:完善服务熔断处理,报警机制完善
1、加入redis依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2、配置redis链接信息
redis:
database: 0
host: 127.0.0.1
port: 6379
timeout: 2000
3、使用
//监控报警
String saveOrderKye = "save-order";
String sendValue = redisTemplate.opsForValue().get(saveOrderKye);
final String ip = request.getRemoteAddr();
new Thread( ()->{
if (StringUtils.isBlank(sendValue)) {
System.out.println("紧急短信,用户下单失败,请离开查找原因,ip地址是="+ip);
//发送一个http请求,调用短信服务 TODO
redisTemplate.opsForValue().set(saveOrderKye, "save-order-fail", 20, TimeUnit.SECONDS);
}else{
System.out.println("已经发送过短信,20秒内不重复发送");
}
}).start();
开始
发送短信的key存储在Redis里面,5分钟后自动失效。失效后继续发送短信。
这里不再讲解Redis的安装步骤,本机默认已经安装好了。
下图是已经加压过的redis的包
mac本机启动redis的服务
启动成功后,spring boot链接redis
1、加入redis依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2、配置redis链接信息
redis:
database: 0
host: 127.0.0.1
port: 6379
timeout: 2000
加入maven的依赖
加上注释
指定Redis的链接信息
我们在application的下面去配置
会有快捷键的提示
选择这个
会生成这段代码
输入h再去选择host
生成 host。
输入por选择
生成port默认的端口是6379
最后还有一个timeout
最终配置
注入redis
写完以上代码发现这是一个同步的调用,调用完了再会继续往下走。所以我们需要创建一个线程去做。
用一个lamada表达式去做。
开一个子线程去发送短信。不影响我们整个流程
重新启动服务进行测试。把productService服务关闭
多次刷新页面访问
高并发的情况下 可以用redis的锁的机制,自行搜索
在方法多加一个参数
我们可以输出ip地址,这样可以判断是哪台服务器出现了问题