Java充电社
专辑
博文
联系我
本人继续续收门徒,亲手指导
MQ专题
-> MQ专题第3篇:消息消费的2种方式:pull方式、push方式,如何选择?
1、MQ专题第1篇:消息队列使用场景
2、MQ专题第2篇:事务消息如何实现?
3、MQ专题第3篇:消息消费的2种方式:pull方式、push方式,如何选择?
4、MQ专题第4篇:如何确保消息消息至少被成功消费一次?
5、MQ专题第5篇:如何确保消息消费的幂等性?
6、MQ专题第6篇:顺序消息如何实现?
上一篇:MQ专题第2篇:事务消息如何实现?
下一篇:MQ专题第4篇:如何确保消息消息至少被成功消费一次?
<div style="display:none"></div> ## 目录 [TOC] ## 消息消费通常有2种方式 1. push方式 2. pull方式 ## push方式 ### push方式的过程 1. mq接收到消息 2. mq主动将消息推送给消费者(消费者需提供一个消费接口) mq属于主动方,消费者属于一种被动消费,一旦有消息到达mq,会触发mq推送机制,将消息推送给消费者,不管消费者处于何种状态。 ### push方式优点 1. 消费者代码较少:对于消费者来说,只需提供一个消费接口给mq即可;mq将接收到的消息,随即推送到指定的消费接口 2. 消息实时性比较高:对于消费者来说,消息一旦到达mq,mq会立即推送给消费者 ### push方式缺点 1. 消费者属于被动方,消息量比较大时,对消费者性能要求比较高;若消费者机器资源有限,可能会导致压力过载,引发宕机的情况。 2. 对消费者可用性要求比较高:当消费者不可用时,会导致很push失败,在mq方需要考虑至少推送成功一次,这块的设计下章节会做说明。 ## pull方式 ### push方式过程 1.消费端采用轮询的方式,从mq服务中拉取消息进行消费 2.消费完成通知mq删除已消费成功的消息 3.继续拉取消息消费 对于消费者来说,是主动方,可以采用线程池的方式,根据机器的性能来增加或缩小线程池的大小,控制拉取消息的速度,可以很好的控制自身的压力。 ### push方式优点 1.消费者可以根据自己的性能主动控制消息拉去的速度,控制自己的压力,不至于把自己弄跨 2.实时性相对于push方式会低一些 3.消费者属于主动方,控制权更大一些 ### push方式缺点 1.消费方需要实现消息拉取的代码 2.消费速度较慢时,可能导致mq中消息积压,消息消费延迟等 ## pull方式和push方式选择建议 1. 消费者性能较好,对实时性要求比较高的,可以采用push的方式 2. 消费者性能有限,建议采用pull的方式 3. 整体上来说,主要在于消费者的性能,机器的性能如果没有问题,push和pull都是可以的 4. 通常我们在Spring中使用的RabbitMQ、RocketMQ都是采用pull的方式,消费端会启动多个消费者,不断的从MQ中拉取消息进行消费 <a style="display:none" target="_blank" href="https://mp.weixin.qq.com/s/_S1DD2JADnXvpexxaBwLLg" style="color:red; font-size:20px; font-weight:bold">继续收门徒,亲手带,月薪 4W 以下的可以来找我</a> ## 最新资料 1. <a href="https://mp.weixin.qq.com/s?__biz=MzkzOTI3Nzc0Mg==&mid=2247484964&idx=2&sn=c81bce2f26015ee0f9632ddc6c67df03&scene=21#wechat_redirect" target="_blank">尚硅谷 Java 学科全套教程(总 207.77GB)</a> 2. <a href="https://mp.weixin.qq.com/s?__biz=MzkwOTAyMTY2NA==&mid=2247484192&idx=1&sn=505f2faaa4cc911f553850667749bcbb&scene=21#wechat_redirect" target="_blank">2021 最新版 Java 微服务学习线路图 + 视频</a> 3. <a href="https://mp.weixin.qq.com/s?__biz=MzkwOTAyMTY2NA==&mid=2247484573&idx=1&sn=7f3d83892186c16c57bc0b99f03f1ffd&scene=21#wechat_redirect" target="_blank">阿里技术大佬整理的《Spring 学习笔记.pdf》</a> 4. <a href="https://mp.weixin.qq.com/s?__biz=MzkwOTAyMTY2NA==&mid=2247484544&idx=2&sn=c1dfe907cfaa5b9ae8e66fc247ccbe84&scene=21#wechat_redirect" target="_blank">阿里大佬的《MySQL 学习笔记高清.pdf》</a> 5. <a href="https://mp.weixin.qq.com/s?__biz=MzkwOTAyMTY2NA==&mid=2247485167&idx=1&sn=48d75c8e93e748235a3547f34921dfb7&scene=21#wechat_redirect" target="_blank">2021 版 java 高并发常见面试题汇总.pdf</a> 6. <a href="https://mp.weixin.qq.com/s?__biz=MzkwOTAyMTY2NA==&mid=2247485664&idx=1&sn=435f9f515a8f881642820d7790ad20ce&scene=21#wechat_redirect" target="_blank">Idea 快捷键大全.pdf</a> ![](https://itsoku.oss-cn-hangzhou.aliyuncs.com/itsoku/blog/article/1/2883e86e-3eff-404a-8943-0066e5e2b454.png)
#custom-toc-container