首页 > 数据库 >SpringBoot利用redission实现延迟队列

SpringBoot利用redission实现延迟队列

时间:2024-10-13 13:20:55浏览次数:8  
标签:orderId SpringBoot 队列 private redissonClient 订单 redission 延迟

1.引入依赖

<dependency>
    <groupId>org.redisson</groupId>
    <artifactId>redisson</artifactId>
    <version>3.23.3</version>
</dependency>

2、注入redissonClient

@Autowired
private RedissonClient redissonClient;

3、发送者代码(假设:我需要检查订单15分钟内是否付款,如果没有付款就取消订单)

/**
 * 发送延迟消息
 * 该方法通过使用Redisson客户端创建一个阻塞队列,并将该队列添加到延迟队列中,然后将订单ID作为消息发送到延迟队列
 * 主要用于处理需要在特定时间后进行处理的任务,例如订单超时取消
 * 
 * @param orderId 订单ID,作为消息内容发送到延迟队列
 */
private void sendDelayMessage(Long orderId) {
    try {
        //1.创建队列
        RBlockingQueue<String> queueCancel = redissonClient.getBlockingQueue("queue_cancel");
        //2.把队列放到延迟队列里面去
        RDelayedQueue<String> delayedQueue = redissonClient.getDelayedQueue(queueCancel);
        //3.发信息到延迟队列里面
        // 将订单ID转换为字符串,设置延迟时间为15分钟
        delayedQueue.offer(orderId.toString(),15,TimeUnit.MINUTES);
    }catch (Exception e) {
        // 异常处理:打印异常堆栈跟踪信息
        e.printStackTrace();
    }
}

4、接收者代码

// 使用@Component注解标记该类为Spring管理的组件
@Component
public class RedisDelayHandle {
    // 自动装配RedissonClient,用于操作Redis
    @Autowired
    private RedissonClient redissonClient;
    // 自动装配OrderInfoService,用于处理订单相关业务
    @Autowired
    private OrderInfoService orderInfoService;

    // 在组件实例化后执行该方法
    @PostConstruct
    public void listener() {
        // 启动一个新的线程来监听Redis中的延迟队列
        new Thread(() -> {
            while (true) {
                // 1. 获取到延迟队列里面的阻塞队列
                RBlockingQueue<String> queueCancel = redissonClient.getBlockingQueue("queue_cancel");
                // 2. 从阻塞队列获取消息
                try {
                    String orderId = queueCancel.take();
                    // 取消订单
                    if (StringUtils.hasText(orderId)) {
                        orderInfoService.orderCancel(Long.parseLong(orderId));
                    }
                } catch (Exception e) {
                    // 打印异常信息,这里可以添加更多的异常处理逻辑
                    e.printStackTrace();
                }
            }
        }).start();
    }
}

完成。

标签:orderId,SpringBoot,队列,private,redissonClient,订单,redission,延迟
From: https://blog.csdn.net/2301_81717523/article/details/142885205

相关文章

  • 基于微信小程序的校园跑腿小程序springboot项目(源码+lw+部署文档+讲解等)兼容app小程
    课题简介本项目旨在为校园师生打造一个便捷高效的跑腿服务平台,基于微信小程序开发前端界面,以SpringBoot构建强大稳定的后端服务。一、功能概述用户注册与登录支持学生和跑腿员通过微信授权快速注册与登录,确保身份真实性和信息安全。任务发布与接单学生用户可在小......
  • 基于微信小程序的小动物救助领养小程序springboot后端(源码+lw+部署文档+讲解等)兼容a
    课题简介本小程序后端基于SpringBoot构建,为小动物救助领养提供了强大的技术支持。它与微信小程序前端紧密配合,实现了一系列关键功能。首先,在数据管理方面,能够高效地存储和处理小动物的信息,包括种类、年龄、健康状况、照片等,以及救助站的相关信息。通过SpringBoot的......
  • 高校学科竞赛平台:SpringBoot实现的高效开发流程
    3系统分析3.1可行性分析通过对本高校学科竞赛平台实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。3.1.1技术可行性本高校学科竞赛平台采用SSM框架,JAVA作为开发语言,是基于WEB平台的B/S......
  • 高校学科竞赛管理:SpringBoot实现的高效策略
    2相关技术2.1MYSQL数据库MySQL是一个真正的多用户、多线程SQL数据库服务器。是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常适用于Web站点或者其他......
  • SpringBoot助力高校学科竞赛平台的快速开发
    2相关技术2.1MYSQL数据库MySQL是一个真正的多用户、多线程SQL数据库服务器。是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常适用于Web站点或者其他......
  • 【开题报告+论文+源码】基于SpringBoot+Vue的教研室听课管理系统
    背景与意义随着信息技术的迅猛发展,教育信息化已成为现代教育的必然趋势。教研室作为高校教学管理的重要机构,肩负着提升教学质量、推动教学改革的重要使命。然而,传统的教学管理方式往往存在效率低下、数据分散、管理不便等问题,难以满足教研室日益增长的教学管理需求。听课作为......
  • 基于SpringBoot+Vue+Uniapp微信小程序的打印室预约系统设计与实现(源码+文档+部署视频)
    文章目录1.前言2.详细视频演示3.论文参考4.项目运行截图5.技术框架5.1后端采用SpringBoot框架5.2前端框架Vue6.选题推荐毕设案例8.系统测试8.1系统测试的目的8.2系统功能测试9.代码参考10.为什么选择我?11.获取源码1.前言......
  • 基于微信的追星小程序springboot+论文源码调试讲解
    第二章开发工具及关键技术介绍2.1微信开发者工具微信开发者工具现在已经被小程序开发团队开发运行,目前微信开发者工具任然在不断的完善中,在开发小程序时经常要不断的更新。可以使用微信扫码登陆开发者工具,开发者工具将使用这个微信帐号的信息进行小程序的开发和调试。机型......
  • 基于SpringBoot+vue的办公用品管理系统设计与实现(源码+文档+部署讲解等)
    文章目录1.前言2.详细视频演示3.程序运行示例图4.文档参考5.技术框架5.1后端采用SpringBoot框架5.2前端框架Vue5.3程序操作流程6.选题推荐7.原创毕设案例8.系统测试8.1系统测试的目的8.2系统功能测试9.代码参考10.为什么选择我?11.获取源码1.前言......
  • 基于微信小程序的在线问答平台的设计与实现springboot+vue的项目
    课题说明基于微信小程序的在线问答平台采用SpringBoot+Vue进行设计与实现。SpringBoot作为后端框架,负责处理问题数据、用户信息及交互逻辑等,确保数据的准确存储与高效管理。Vue构建微信小程序前端,为用户呈现友好的界面。用户通过小程序可方便地发布问题,详细描述问......