到此 灵熙云工作室 - 实践出真理 查看全文内容

应用场景

目前常见的应用软件都有消息的延迟推送的影子,应用也极为广泛,例如:

  • 淘宝七天自动确认收货。在签收商品后,物流系统会在七天后延时发送一个消息给支付系统,通知支付系统将款打给商家,这个过程持续七天,就是使用了消息中间件的延迟推送功能。
  • 12306 购票支付确认页面。在选好票点击确定跳转的页面中往往都会有倒计时,代表着 30分钟内订单不确认的话将会自动取消订单。其实在下订单那一刻开始购票业务系统就会发送一个延时消息给订单系统,延时30分钟,告诉订单系统订单未完成,如果我们在30分钟内完成了订单,则可以通过逻辑代码判断来忽略掉收到的消息。

在上面两种场景中,如果使用下面两种传统解决方案无疑大大降低了系统的整体性能和吞吐量:

  • 使用 redis 给订单设置过期时间,最后通过判断 redis中是否还有该订单来决定订单是否已经完成。这种解决方案相较于消息的延迟推送性能较低,因为我们知道redis都是存储于内存中,我们遇到恶意下单或者刷单的将会给内存带来巨大压力。
  • 使用传统的数据库轮询来判断数据库表中订单的状态,这无疑增加了IO次数,性能极低。
  • 使用 jvm 原生的 DelayQueue,也是大量占用内存,而且没有持久化策略,系统宕机或者重启都会丢失订单信息。

之前一般采用死信队列+TTL过期时间来实现延迟队列,现在RabbitMQ 官方提供了延迟队列的插件,这个插件是实验性的,但相当稳定,废话不多说开整

插件安装

此插件需要 Erlang 23.2 或更高版本。Erlang windows下载

最新版本针对 RabbitMQ3.8.x,较早的系列已不受支持。RabbitMQ下载

插件下载放置到 RabbitMQ 根目录下的 plugins 内。延迟队列插件下载

进入RabbitMQ安装目录的sbin目录下,在cmd窗口使用命令启用延迟插件

rabbitmq-plugins enable rabbitmq_delayed_message_exchange

禁用插件,使用如下命令,但请注意,所有尚未交付的延迟消息都将丢失

rabbitmq-plugins disable rabbitmq_delayed_message_exchange

注:本demo在windows环境下模拟,插件采用rabbitmq-delayed-message-exchange v3.8.x版本;插件启用或禁用时,若Rabbitmq服务一直是启用状态的话,需重启使其生效

到此 灵熙云工作室 - 实践出真理 查看全文内容

rabbitmq 消息延迟推送--插件模式相关推荐

  1. RabbitMQ(九):RabbitMQ 延迟队列,消息延迟推送(Spring boot 版)

    应用场景 目前常见的应用软件都有消息的延迟推送的影子,应用也极为广泛,例如: 淘宝七天自动确认收货.在我们签收商品后,物流系统会在七天后延时发送一个消息给支付系统,通知支付系统将款打给商家,这个过程持 ...

  2. RabbitMQ 延迟队列,消息延迟推送

    应用场景 目前常见的应用软件都有消息的延迟推送的影子,应用也极为广泛,例如: 淘宝七天自动确认收货.在我们签收商品后,物流系统会在七天后延时发送一个消息给支付系统,通知支付系统将款打给商家,这个过程持 ...

  3. RabbitMQ实现消息的延迟推送或延迟发送

    使用RabbitMQ实现消息的延迟消费 文章目录 前言 一.RabbitMQ是什么? 1.RabbitMQ简介 2.RabbitMQ的优点 3.常用组件 4.RabbitMQ的结构图 5.交换机的类型 ...

  4. netty服务器定时发送消息,netty+websocket+quartz实现消息定时推送

    netty+websocket+quartz实现消息定时推送&&IM聊天室 在讲功能实现之前,我们先来捋一下底层的原理,后面附上工程结构及代码 1.NIO NIO主要包含三大核心部分: ...

  5. 在ionic/cordova中使用极光推送插件(jpush)

    Stpe1:创建一个项目(此处使用的是tab类型的项目,创建方式可参照我前一篇如何离线创建Ionic1项目) Stpe2:修改项目信息 打开[config.xml]修改下图内容: Stpe3:创建极光 ...

  6. wordpress常用插件打包 百度搜索推送插件+sitemap生成等

    简介: wordpress常用插件打包 百度搜索推送插件+sitemap生成+七牛云对象存储+评论防护 一.WordPress 七牛云对象存储(简称:WPQiNiu),基于七牛云对象存储与 WordP ...

  7. php消息实时推送技术,基于HTTP协议之WEB消息实时推送技术原理及实现

    很早就想写一些关于网页消息实时推送技术方面的文章,但是由于最近实在忙,没有时间去写文章.本文主要讲解基于 HTTP1.1 协议的 WEB 推送的技术原理及实现.本人曾经在工作的时候也有做过一些用到网页 ...

  8. 仿淘宝开放平台之消息服务——消息中心推送消息至消费者

    消息中心收到生产者推送过来的业务消息外,一方面,需要给生产者推送一条消息确认的响应消息:另一方面,则需要根据消息主题,查找所有订阅该主题的消费者(实际就是消息客户端),将消息复制及转发出去. ​ 这种 ...

  9. 消息推送服务器推pc,PC浏览器消息实时推送的解决方案 ——EPush推送平台

    原标题:PC浏览器消息实时推送的解决方案 --EPush推送平台 陈华 研发工程师,2014入职去哪儿网.参与研发的EPush推送平台,增强了订单推送的时效性,提高了酒店自助订单处理率.最近负责CEQ ...

最新文章

  1. lr手工添加关联函数的步骤:
  2. 前端开发这么多年,你真的了解浏览器页面渲染机制吗?
  3. flutter 自定义 AppBar
  4. C/C++ scanf 函数中%s 和%c 的简单差别
  5. 深度解读OpenYurt:从边缘自治看YurtHub的扩展能力
  6. 在webLogic 10.3中部署Hibernate 3.5出现 ClassNotFoundException解决办法
  7. mysql group b_mysql报错之5.7版本的 group by mysql不能使用group by
  8. 设置ecshop2.7首页幻灯片宽度为100%
  9. jira怎么提交bug_请停止编写糟糕的提交消息!
  10. 拓端tecdat|“新媒体”和“社群”调查报告
  11. JavaWEB前端向服务器端发送对象
  12. 计蒜客 挑战难题 整数转换成罗马数字
  13. 新手入门:Javascript的使用技巧大全(一)
  14. Velodyne VLP16激光雷达的使用(非常详细)
  15. 【路由器】OpenWrt 简介和安装
  16. python实现 pdf转png格式
  17. 宇视科技android面试_浙江宇视科技有限公司面试经验
  18. WARN Error while fetching metadata with correlation id 5 : {testtopic=LEADER_NOT_AVAILABLE}
  19. Android框架——下载图片框架Fresco
  20. 《introduction to information retrieval》信息检索学习笔记4 索引结构

热门文章

  1. shell开启飞行模式_原来手机飞行模式有这么多用处!很多人都不知道...
  2. 【高可用HA】Centos7.0下通过Corosync+pacemaker+pcs+drbd实现mariadb的高可用
  3. 分享十款适合互联网公司的效率软件
  4. 说说我的专业计算机作文,我家的电脑作文
  5. linux收不到icmp数据,linux – ICMP Host Unreachable消息导致火星源数据包
  6. 好用软件分享,请快快收下这几个
  7. Docker搭建php本地开发环境 - 保姆教程
  8. 创业干货:牛逼的外衣,苦逼的内裤
  9. matlab 二维高斯分布绘图,matlab:画二维高斯分布密度函数图
  10. Python数据可视化:绘制持仓榜单的“棒棒糖图”