本文主要讲解RabbitMQ的部分应用场景以及具体代码的实现

文章目录

  • 1.应用场景
  • 2.消息延迟推送的实现
  • 3.生产端
  • 4.消费端
  • 5.运行效果
    • 5.1运行消费端
    • 5.2运行生产端
    • 5.3查看消费端
  • 6.获取代码

1.应用场景

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

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

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

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

2.消息延迟推送的实现

在 RabbitMQ 3.6.x 开始,RabbitMQ 官方提供了延迟队列的插件,可以下载放置到 RabbitMQ 根目录下的 plugins 下:延迟队列插件下载

然后开启rabbitmq_delayed_message_exchange插件

rabbitmq-plugins enable rabbitmq_delayed_message_exchange

通过命令:

rabbitmq-plugins list

可以查看插件的列表:

3.生产端

目录结构

application.yml 配置

spring:rabbitmq:port: 5672host: localhostusername: guestpassword: guestvirtual-host: /connection-timeout: 15000#开启 confirm 确认机制publisher-confirms: true#开启 return 确认机制publisher-returns: truetemplate:mandatory: trueserver:port: 8080

4.消费端

在实际生产环境中,生产端和消费端一般都是两个系统,我们在此也将拆分成两个项目。

目录结构

application.yml 配置

spring:rabbitmq:port: 5672host: localhostusername: guestpassword: guestvirtual-host: /#设置消费端手动 acklistener:simple:acknowledge-mode: manual#消费者最小数量concurrency: 1#消费之最大数量max-concurrency: 10#在单个请求中处理的消息个数,他应该大于等于事务数量(unack的最大数量)prefetch: 2server:port: 8081

5.运行效果

5.1运行消费端

5.2运行生产端

5.3查看消费端



由于我延时时间设置的为6秒钟,所以6秒后消费端收到消息。

6.获取代码


关注公众号:理木客 ,后台回复:mq111 ,即可获取两个项目的完整代码。

淘宝自动确认收货怎么使用Springboot+RabbitMQ实现?相关推荐

  1. 艾司博讯:拼多多没确认收货多久系统才自动确认收货

    现在大多朋友对网购都不陌生,一般我们收到货后都会确认收货,然后给商品进行评价.当然,一些朋友比较忙或者没有确认收货的习惯,过了一段时间后会自动确认收货.那么拼多多确认收货期限是几天,下面就为大家带来介 ...

  2. php怎么点击确认收货,解决修正Ecshop的recieve.php邮件自动确认收货问题

    解决修正Ecshop的recieve.php邮件自动确认收货问题 将之前的ecshop确认收货页面改成如下格式: //确认页面 $act = !empty($_REQUEST['act']) ? ra ...

  3. php 自动收货’_PHP实现电商订单自动确认收货redis队列

    一.场景 之前做的电商平台,用户在收到货之后,大部分都不会主动的点击确认收货,导致给商家结款的时候,商家各种投诉,于是就根据需求,要做一个订单在发货之后的x天自动确认收货.所谓的订单自动确认收货,就是 ...

  4. PHP与redis队列实现电商订单自动确认收货

    一.场景 之前做的电商平台,用户在收到货之后,大部分都不会主动的点击确认收货,导致给商家结款的时候,商家各种投诉,于是就根据需求,要做一个订单在发货之后的x天自动确认收货.所谓的订单自动确认收货,就是 ...

  5. php自动收货,如何在PHP中实现一个订单自动确认收货的redis队列

    如何在PHP中实现一个订单自动确认收货的redis队列 发布时间:2020-12-14 15:45:55 来源:亿速云 阅读:65 作者:Leah 本篇文章为大家展示了如何在PHP中实现一个订单自动确 ...

  6. 从零开发短视频电商 30分钟未支付订单自动关闭、七天自动确认收货等延迟任务问题

    文章目录 常见延迟任务 常见解决方案 主动形式 被动形式 基于Redis实现ZSet的方式.键空间通知的方式 ZSet的方式 键空间通知的方式 RocketMQ延迟消息 延迟消息级别配置 客户端发送延 ...

  7. 拼多多自动确认收货后还能退吗?退货申请期限是多久?

    其实,在确认收货一点也不难,只需要签收后,点击确认收货按钮就行了.不过,还是有不少伙伴都了懒于去点击确认收货,这个时候系统会自动确认收货 拼多多自动确认收货后还能退吗? 1.常规商品15天内是消费者收 ...

  8. php 10天自动确认收货,ECSHOP修正recieve.php判断不严谨导致邮件自动确认收货

    今天小编在一个技术论坛上看了这样一个求助帖,一位用ecshop建站的店长朋友反应"用户明明没有确认收货,可是会员管理里面,订单状态却显示为已经确认收货".看到这个求助帖之后,小编很 ...

  9. php 10天自动确认收货,修正Ecshop的recieve.php邮件自动确认收货BUG

    Ecshop没有点击邮件中的确认收货链接,但是进入个人中心却发现订单状态已经更改为了已经收到货的状态了.问题出在QQ邮箱.Ecshop的recieve设计是用户点了链接直接就改变订单状态到确认收货,而 ...

  10. php怎么点击确认收货,Ecshop的recieve.php邮件自动确认收货BUG如何修正

    今天小编在逛论坛的时候发现一个有关ecshop的BUG的帖子,现在发出来个大家分享下,如果朋友们遇到这个的问题可以作为参考修改. BUG描述如下: Ecshop没有点击邮件中的确认收货链接,但是进入个 ...

最新文章

  1. 怎样学会单片机?先学什么,怎么入门?
  2. spring启动过程之源码跟踪(下)--spring Debug
  3. Intellij IDEA设置忽略部分类编译错误
  4. Servlet3 -- Servlet异步处理
  5. Java学习——Java运算符
  6. 归一化函数mapminmax的讨论
  7. HTTP 错误 403.1 - 禁止访问:执行访问被拒绝
  8. SVN服务器搭建--Subversio与TortoiseSVN的配置安装(Windows)
  9. 关联分析中FPGrowth算法原理及实战
  10. 如何成为一名Go开发人员:总共分六步
  11. VS2017生成可执行程序,执行提示“不是有效的win32应用程序”
  12. IPFS DHT专题:去中心化搜索的架构演进
  13. Kali开机后的初始化配置
  14. ios禁止屏幕旋转的几种方法
  15. 上海居住证满3年或积分满120分房产税退税流程2014年
  16. Ae 入门系列之二:素材的导入与管理
  17. 超级右键 iRightMouse --Mac强大的右键菜单设置工具
  18. ARP与RARP协议详解 (三)
  19. 如何利用MAXScript代码进行DNA双螺旋结构的创建
  20. 痞子衡嵌入式:语音处理工具Jays-PySPEECH诞生记(3)- 音频显示实现(Matplotlib, NumPy1.15.0)...

热门文章

  1. 击破“坪效”天花板,从“3050法则”看餐饮数字化迁徙
  2. 三角形旋转css_三种纯CSS实现三角形的方法
  3. wd移动硬盘不能识别_wd移动硬盘无法识别
  4. Ubuntn16.04 迅雷安装
  5. php遵义旅游管理系统的设计与实现毕业设计源码091801
  6. SQL 校验身份证格式
  7. openGL学习之旅(一)DEV-C++安装GLUT
  8. JS数组方法(最详细)
  9. bzoj1864 [Zjoi2006]三色二叉树
  10. 华为充电的效果_华为充电特效主题插件下载-华为炫酷充电特效插件1.0.1安卓版-精品下载...