RabbitMQ的死信队列的应用
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan
【前言】
最近在项目中用到了RabbitMQ来做异步处理,自己将这块儿系统的搞了搞,下面主要记录一下自己在研究过程中对死信队列的一些研究。
【实践】
一、如何配置死信队列?
1、增加死信队列(exchange-ttl-to.queue)
2、增加死信交换机(exchange-ttl-to)并绑定死信队列
3、配置正常的队列(exchange-ttl-from.queue)
4、增加正常的交换机(exchange-ttl-from)
二、用代码进行相关测试:
1、生产者进行添加,20s后不进行消费,发现消息从正常的队列进入了死信队列;
2、生产者进行添加,消费者进行消费;
3、设置死信队列要根据具体的业务场景去应用,一般应用在当正常业务处理时出现异常时,将消息拒绝则会进入到死信队列中,有助于统计异常数据并做后续处理;
三、利用jemeter进行压力测试:
1、向正常队列中压入1000条消息,生产者不消费,过20s后发现进入死信队列;
2、向正常队列中压入1000条消息,消费者一直在消费,看20s后消费者能消费多少条消息;
【总结】
1、对程序进行异步处理后可以缓解一方产生块另一方消费慢的问题;
2、可以实现延迟处理的功效:数据上来后先进入正常的queue中(根据业务设置相应的失效时间【延迟时间】)进入死信队列,消费者消费死信队列中的数据;注:正常queue没有消费者,死信queue有消费者;
3、给客户的体验感好了,异步处理后,不需要等待同步的结果;
RabbitMQ的死信队列的应用相关推荐
- RabbitMq(五) -- 死信队列和延迟队列
1. 死信 1.1 死信的概念 先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer 将消息投递到 broker 或者直接到 queue ...
- RabbitMQ:死信队列
✨ RabbitMQ:死信队列 1.死信队列 1.1死信队列基本介绍 1.2消息成为死信的三种情况 1.3死信队列结构图 1.4死信的处理方式 2.TTL消息过期时间 2.1基本介绍 2.2生产者 2 ...
- rabbitMQ学习-死信队列
死信队列 死信:顾名思义就是无法被消费的消息,一般情况下,product将消息投递到broker或者直接到queue里,consumer从queue取出消息,进行消费,但某些时候由于特定的原因导致qu ...
- RabbitMQ 之死信队列
文章目录 什么是死信队列 如何配置死信队列 死信消息的变化 死信队列应用场景 总结 什么是死信队列 为了保证订单业务的消息数据不丢失,需要使用到RabbitMQ的死信队列机制,当消息消费发生异常时,将 ...
- rabbitmq利用死信队列+TTL 实现延迟队列
2019独角兽企业重金招聘Python工程师标准>>> 适用场景:订单超时未支付,倘若适用定时器的话,那么数据量大的话,轮询查询数据,首先IO开销大,其次任务时间要求高,扫描越频繁性 ...
- 消息中间件之rabbitMQ实战-死信队列
该篇文章内容较多,包括有rabbitMq相关的一些简单理论介绍,集成spring Boot,provider消息推送实例,consumer消息消费实例,Direct(直连类型交换机).Fanout(广 ...
- RabbitMQ实现死信队列
目录 死信队列是什么 怎样实现一个死信队列 说明 实现过程 导入依赖 添加配置 编写mq配置类 添加业务队列的消费者 添加死信队列的消费者 添加消息发送者 添加消息测试类 测试 死信队列的应用场景 总 ...
- RabbitMQ高级特性(五):RabbitMQ之死信队列DLX
一.死信队列简介 (1)死信队列 死信队列,英文缩写:DLX .Dead Letter Exchange(死信交换机),当消息成为Dead message后,可以被重新发送到另一个交换机,这个交换机就 ...
- RabbitMQ的死信队列
什么是死信 在 RabbitMQ 中充当主角的就是消息,在不同场景下,消息会有不同地表现. 死信就是消息在特定场景下的一种表现形式,这些场景包括: 消息被拒绝访问,即 RabbitMQ返回 nack ...
最新文章
- 源码安装nginx开启SSL功能
- php 判断浏览器是ie,js判断是否是ie浏览器
- liunx系统不能登陆的问题
- mariadb mysql 5.6_MySQL / MariaDB 5.5 升级到 MySQL 5.6
- java 浮点型 除零_Java-非零整数除以10等于0.0浮点?
- python输入的方式有几种_Python输入方式具体的三种实现方式
- Angular使用总结 --- 模型驱动表单
- SpringBoot 优雅停止服务的几种方法
- GCC the GNU
- android实现下载的核心代码
- WordPress主题精美写真图片图集网站源码
- Component name “XXX“ should always be multi-word vue/multi-word-component-names
- CSS - (Cascading Style Sheets) 自学教程
- 主成分分析(PCA)原理分析Python实现
- 个性化智能推荐(协同过滤算法)技术研究
- Google 推出浏览器版Google Voice
- 剖析visa信用卡支付的交易处理流程
- 【HTPC】第一期jellyfin windows版使用显卡硬件转码
- 声网Agora Lipsync技术剖析:通过实时语音驱动人像模拟真人说话
- 什么是内联电子商务_什么是电子商务
热门文章
- 阿里每天纳税超 1.4 亿元;余承东:苹果很难和华为竞争;三星 Note 7 爆炸案终审 | 极客头条...
- GitHub 日收 7000 星,Windows 计算器项目开源即爆红!
- 程序员如何自制酒店 Wi-Fi?
- 作为一个菜鸟码农,如何判断你所在的团队是否有前途?
- 苹果发布 2017 年度应用榜单,你的 App 榜上有名吗?
- Java定义全局变量的方法
- 牛逼!mysql创建库books
- esxi vsphere的端口_硬干货!一张图弄清楚在ESXi下如何进行网络抓包
- php5.5 pdo mysql_PHP5中PDO的简单使用
- c 普通的文本变成注释文本的快捷键_phpstrom 快捷键,记一下记一下!(life)