当前位置:编程学堂 > 【上海硅谷RabbitMQ】六、图文详解延迟队列:集成Springboot队列优化Docker中插件安装及代码实现

【上海硅谷RabbitMQ】六、图文详解延迟队列:集成Springboot队列优化Docker中插件安装及代码实现

  • 发布:2023-09-30 19:07

1。概念

  • 延迟队列(延迟队列):队列内部是有序的。最重要的特点体现在它的Delay属性Up

  • 延迟队列中的元素预计在指定时间

    之后或之前被取出并处理
  • 延迟队列是用于存储需要在指定时间处理的元素

2。使用场景

  • 订单十分钟内未付款将自动取消
  • 新创建的店铺十天内没有上传商品,会自动发送消息提醒
  • 用户注册成功后,如果用户三天内没有登录,将会发送短信提醒
  • 用户发起退款。若三天内未处理,将通知相关操作人员
  • 预约会议后,需要在预定时间前十分钟通知每位参会者参加会议

这些场景都有一个特点,就是要求在某个事件发生之后或者之前的指定时间点完成某个任务。

例如:当发生订单生成事件时,十分钟后查看订单的支付状态,然后关闭未支付的订单;好像是用一个定时任务一直轮询数据,每秒检查一次,需要处理移除,处理完数据再处理还不够吗?如果数据量比较小,确实可以这样做。例如:对于“一周内未付款自动结算”这样的需求,如果没有严格限制时间,而是宽松意义上的一周,那么每天晚上运行一个定时任务,检查所有未付款票据确实是一个可行的解决方案。但对于数据量比较大、时效性强的场景,比如:“十分钟内未付款,订单将被关闭”。短期内可能会出现大量未支付的订单数据,甚至在活动期间达到数百万甚至数千万。 level,如此庞大的数据量,仍然使用轮询的方式显然是不可取的。很可能所有订单都无法在一秒内完成。同时会给数据库带来很大的压力,无法满足业务需求,性能低下。 。

3。集成弹簧引导

  • pom.xml

<项目 xmlns="http://www.sychzs.cn/POM/4.0.0 xmlns:xsi="http://www.sychzs.cn/2001/XMLSchema-instance"xsi:schemaLocation=http://www.sychzs.cn/POM/4.0.0 https://www.sychzs.cn/xsd/maven-4.0 .0.xsd">
    <模型版本>4.0.0模型版本> 
    <父级>
        <groupId>org.springframework.bootgroupId> 
        <artifactId>spring-boot-starter-parentartifactId> 
        <版本>2.6.5版本>
        <相对路径/> 
    >
    <groupId>com.tuwergroupId>
    <artifactId>springboot-rabbitmqartifactId> 
    <版本>0.0.1-SNAPSHOT版本> 
    <name>Springboot-rabbitmqname>spring boot description><<description>demo项目
    <属性>
        <java.version>1.8java.version> 
    属性>
    <依赖项>
        <依赖性>
            <groupId>org.springframework.bootgroupId> 
            <artifactId>spring-boot-starter-amqpartifactId> 
        依赖>
        <依赖性>
            <groupId>org.springframework.bootgroupId> 
            <artifactId>spring-boot-starter-webartifactId> 
        依赖>

        <依赖性>
            <groupId>org.projectlombokgroupId><artifactId>lombokartifactId> 
            <可选>true可选>
        依赖>
        <依赖性>
            <groupId>org.springframework.bootgroupId> 
            <artifactId>spring-boot-starter-测试artifactId> 
            <范围>测试范围>
        依赖>
        <依赖性>
            <groupId>org.springframework.amqpgroupId> 
            <artifactId>弹簧兔子测试artifactId> 
            <范围>测试范围>
        依赖>
        <依赖性><groupid>com.com.alibabagroupid>
            <artifactId>fastjsonartifactId>
            <版本>1.2.79版本>
        依赖>
        
        <依赖性>
            <groupid>iio.springfoxgroupid>
            <artifactId>springfox-boot-starterartifactId> 
            <版本>3.0.0版本>
        依赖>
    依赖项>

    <构建>
        <插件>
            <插件>
                <groupId>org.springframework.bootgroupId> 
                <artifactId>spring-boot-maven-pluginartifactId> <配置>
                    <排除>
                        <排除>
                            <groupId>org.projectlombokgroupId>
                            <artifactId>lombokartifactId> 
                        排除>
                    排除>
                配置>
            插件>
        插件>
    构建>

项目>
  • application.yml
弹簧
  rabbitmq:
    主机:192.168.19.101
    端口 5672
    用户名 admin
    密码 管理员
  • 添加Swagger配置类
套件 com.tuwer.配置 ;

导入org.springframework.上下文 .注释.Bean;
导入org.springframework.上下文 .注释.配置;
导入org.springframework.web .servlet.配置.注释.EnableWebMvc;
导入springfox.文档.服务 .ApiInfo;
导入springfox.文档.服务 .联系方式;
导入springfox.文档.spi.文档类型;
导入springfox.文档.spring .web.插件.案卷;导入java.util.ArrayList ;

/**
 * @作者托ミ儿
 *日期2022年3月26日
 *@版本1.0
 */
@配置
@EnableWebMvc
公共  SwaggerConfig { 
    /**
     * Placement Swagger具体参考号
     * @返回
     */
    @Bean
    公共 案卷 案卷() {
        返回  案卷文档类型) .OAS_30)
                .群组名称("webApi")
                .apiInfo(apiInfo())  
                .选择()
                .构建();
    }

    /**
     *自定义API文本信息
     * @返回
     */
    私有ApiInfoapiInfo(){
        //作者信息联系方式联系方式=联系方式("乡土风味", "http : // 本地主机: 8080/",  " support@www.sychzs.cn ") ; 

        返回 ApiInfo(
                “Hello Swagger API 文档”
                “路无边际,行者无疆”
                "v1.0",
                “http://localhost:8080/”,
                联系方式,
                “阿帕奇2.0”
                “http://www.sychzs.cn/licenses/LICENSE-2.0”,
                 ArrayList()); 
    }
}

相关文章