SpringBoot下RabbitMq实现定时任务

本文介绍了在SpringBoot中如何利用RabbitMQ实现定时任务,具体场景为订单超时自动关闭。通过设置死信队列和延迟队列,结合交换机和路由策略,实现了消息的延迟处理。代码实现包括队列、交换机和绑定的声明,并进行了测试验证。
摘要由CSDN通过智能技术生成

SpringBoot下RabbitMq实现定时任务

定时任务场景:订单下单15分钟未付款自动关闭

延迟任务实现原理图如下:

在这里插入图片描述

根据上图看出我们需要两个队列(一是死信队列,消息在里面度过TLL时间,二是处理队列,消息度过TLL时间后进入该队列),两个交换机和路由(一是用来将消息送入死信队列,二是将消息从死信队列送到处理队列),但是交换机其实可以用同一个,也就是一个交换机搭配两个路由的方式。

以下为代码实现过程:

//首先rabbitAdmin的配置
    @Bean
    public RabbitAdmin rabbitAdmin(CachingConnectionFactory cachingConnectionFactory){
   
        RabbitAdmin rabbitAdmin = new RabbitAdmin(cachingConnectionFactory);
        rabbitAdmin.setIgnoreDeclarationExceptions(true);
        return rabbitAdmin;
    }

然后是队列交换机以及绑定的声明(Queue,Exchange,Binding)

@Autowired
    RabbitAdmin rabbitAdmin;

    /**
     * 创建延迟队列,该队列内容不会呗监听,TLL到期自动转发
     * @param queueName
     * @param delayExchange
     */
    public void createDelayQueue(String queueName,String delayExchange,String delayRoutingKey){
   
        Map<String, Object> map = new HashMap<
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值