• 小D课堂


    笔记

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







     

  • 相关阅读:
    [收藏]利用ASP.NET技术动态生成HTML页面
    [收藏]为DataGrid添加CheckBox控件
    Html代码中table跨2行和跨2列的用法
    常用的匹配正则表达式和实例
    一个在DotNet下和Java下都通用的加密类!
    如何动态加载js文件?
    多个域下共享Cookie的实现
    [收藏]2进制、8进制、10进制、16进制...各种进制间的轻松转换(c#)
    [总结]取得Web程序和非Web程序的根目录的N种取法(C#)
    MSN错误代码(error coed)解决大全
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/11449154.html
Copyright © 2020-2023  润新知