一、场景

    我们经常会碰见,一个需求就是,发送一条指令(消息),延迟一段时间执行,比如说常见的淘宝当下了一个订单后,订单支付时间为半个小时,如果半个小时没有支付,则关闭该订单。当然实现的方式有几种,今天来看看rabbitMQ实现的方式。

二、思路:rabbitMQ 如何实现

1:rabbitMQ为每个队列设置消息的超时时间。只要给队列设置x-message-ttl 参数,就设定了该队列所有消息的存活时间,时间单位是毫秒。如果声明队列时指定了死信交换器,则过期消息会成为死信消息

2:需要设置的参数为:



三、原理:上图

1:将延迟队列(queue)在声明的时候设置参数 “ x-dead-letter-exchange ”,“ x-message-ttl “ 分别对应 死信路由器(dlx_exchange) 和 消息过期时间(比如说30分钟)。

2: 一个消息从生产者发送到延迟队列 ,在延迟队列里等待,等待30分钟后,会去绑定的死信路由(dlx_exchange)。通过死信路由的规则,走到死信队列。

3:这时候监听死信队列的消费者就可以接收到消息,消费消息。比如说提交订单限时15分钟的支付时间,时间到后,查看该订单是否支付,如果没有支付,则关闭该订单。

RabbitMQ 延迟任务(限时订单) 思路的更多相关文章

  1. 限时订单实现方案(DelayQueue、ActiveMq)

    原文链接:http://www.studyshare.cn/blog-front/blog/details/1132 一.在各种电商网站下订单后会保留一个时间段,时间段内未支付则自动将订单状态设置为已 ...

  2. RabbitMQ内存爆出问题解决思路

    http://www.bubuko.com/infodetail-2121050.html RabbitMQ升级到3.6.1版本后,随着业务和系统功能的增加,出现RabbitMQ内存陡增直至服务宕掉的 ...

  3. RabbitMQ 入门教程(PHP版) 延迟队列,延迟任务

    延迟任务应用场景 场景一:物联网系统经常会遇到向终端下发命令,如果命令一段时间没有应答,就需要设置成超时. 场景二:订单下单之后30分钟后,如果用户没有付钱,则系统自动取消订单. 场景三:过1分钟给新 ...

  4. RabbitMq解决分布式事物

    一.RabbitMQ解决分布式事务思路: 案例: 经典案例,以目前流行点外卖的案例,用户下单后,调用订单服务,让后订单服务调用派单系统通知送外卖人员送单,这时候订单系统与派单系统采用MQ异步通讯. 二 ...

  5. 使用RabbitMQ实现分布式事务

    RabbitMQ解决分布式事务思路: 案例: 经典案例,以目前流行点外卖的案例,用户下单后,调用订单服务,让后订单服务调用派单系统通知送外卖人员送单,这时候订单系统与派单系统采用MQ异步通讯. Rab ...

  6. rabbitmq在kubernetes中持久化集群部署

    背景 Javashop电商系统的消息总线使用的事rabbitmq,在订单创建.静态页生成.索引生成等等业务中大量采用异步消息系统,这个对于mq高可用的要求有两个重要的考量: 1.集群化 2.可扩容 3 ...

  7. RabbitMQ 消息中间件

    RabbitMQ 是使用 Erlang 语言开发的消息中间件, 其遵循了高级消息队列协议(Advanced Message Queuing Protocol, AMQP). 与 Kafka 等消息队列 ...

  8. AutoMapper在MVC中的运用07-映射在订单场景的例子

    本文参考了Taswar Bhatti的博客,他写了<Instant AutoMapper>这本书.遗憾的是,这本电子版书在国内还买不到,也下载不到.也只能从他的有限几篇博文中来窥探一二了. ...

  9. spring boot Rabbitmq集成,延时消息队列实现

    本篇主要记录Spring boot 集成Rabbitmq,分为两部分, 第一部分为创建普通消息队列, 第二部分为延时消息队列实现: spring boot提供对mq消息队列支持amqp相关包,引入即可 ...

  10. springboot 项目 运行rabbitmq(推送+消费)

    准备 先下载windos版本的mq 「rabbitmq-server-3.9.13.exe」https://www.aliyundrive.com/s/VKB63ghAJZx 点击下载 1启动rabb ...

随机推荐

  1. Solution Set - IQ ↓↓

    Q: 为什么说雨兔是个傻子? A: 因为一路上全是星号标记.   呃, 本来的好像是 constructive || greedy, 但感觉最近整体题量不高, 就换成 2700-2900 了. 然后惊 ...

  2. 使用ffmpeg去除音频静音

    直接使用cmd命令ffmpeg -i input.wav -af silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-30dB ...

  3. SpringBoot实现人脸识别功能

    一.人脸注册 step1:人像采集.在注册页面上用html中video组件和js调用笔记本摄像头,并抓取人像图片.没有摄像头的笔记本.台式机的童鞋告辞吧,走好不送... step2:人像上传至项目文件 ...

  4. 史上最详细idea提交代码到github教程

    史上最详细idea提交代码到github教程步骤前言github上创建空项目 idea上代码关联本地gitidea上代码本地提交解决Push rejected: Push to origin/mast ...

  5. .NET Core GC计划阶段(plan_phase)底层原理浅谈

    简介 在mark_phase阶段之后,所有对象都被标记为有用/垃圾对象.此时,垃圾回收器已经拥有启动垃圾回收的所有前置准备工作. 这个时候,垃圾回收期应该执行"清除回收"还是&qu ...

  6. Python pika消费Rabbit MQ数据,慢消费引起的connection reset问题

    问题描述 使用python pika框架,从Rabbit MQ消费数据时,遇到了connection reset的错误,错误内容如下: Traceback (most recent call last ...

  7. Flask+flask-socketio+jsonrpc组合配置避坑

    Flask+flask-socketIO+jsonrpc这种组合能被我套出来也是离谱,事先声明:出现这种组合是因为本人之前对flask框架的使用仅限于flask+jsonrpc,所以导致这种情况出现, ...

  8. Ansible之一module

    常用自动化运维工具 Ansible:python,Agentless,中小型应用环境 saltstack:python,一般需部署agent,执行效率更高 puppet:ruby,功能强大,配置复杂, ...

  9. Apache Amoro数据湖管理和治理工具部署

    一.Amoro介绍 2024 年 3 月 11 日,Amoro 项目顺利通过投票,正式进入 Apache 软件基金会(ASF,Apache Software Foundation)的孵化器,成为 AS ...

  10. Luogu P11036 GCD 与 LCM 问题 [ 绿 ] [ 构造 ] [ 数论 ] [ adhoc ]

    Luogu P11036 GCD 与 LCM 问题:梦熊的题真是又神又逆天. 思路 观察到有个奇数的特殊性质,我们尝试从奇数构造入手. 先来尝试带入极端数据,对于 \(\gcd\),我们可以把 \(b ...