笔记
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地址,这样可以判断是哪台服务器出现了问题