谈谈mq消息消费的几种方式
mq系列文章
对mq了解不是很多的,可以看一下下面两篇文章:
聊聊mq的使用场景
聊聊业务系统中投递消息到mq的几种方式
聊聊消息消费的几种方式
如何确保消息至少消费一次
如何保证消息消费的幂等性
本章内容
从消费者的角度出发,分析一下消息消费的两种方式:
push方式
pull方式
push方式
消息消费的过程:
1. mq接收到消息
2. mq主动将消息推送给消费者(消费者需提供一个消费接口)
mq属于主动方,消费者属于一种被动消费,一旦有消息到达mq,会触发mq推送机制,将消息推送给消费者,不管消费者处于何种状态。
优点:
1. 消费者代码较少:对于消费者来说,只需提供一个消费接口给mq即可;mq将接收到的消息,随即推送到指定的消费接口
2. 消息实时性比较高:对于消费者来说,消息一旦到达mq,mq会立即推送给消费者
缺点:
1.消费者属于被动方,消息量比较大时,对消费者性能要求比较高;若消费者机器资源有限,可能会导致压力过载,引发宕机的情况。
2.对消费者可用性要求比较高:当消费者不可用时,会导致很push失败,在mq方需要考虑至少推送成功一次,这块的设计下章节会做说明。
pull方式
消息消费的过程:
1.消费端采用轮询的方式,从mq服务中拉取消息进行消费
2.消费完成通知mq删除已消费成功的消息
3.继续拉取消息消费
对于消费者来说,是主动方,可以采用线程池的方式,根据机器的性能来增加或缩小线程池的大小,控制拉取消息的速度,可以很好的控制自身的压力。
优点:
1.消费者可以根据自己的性能主动控制消息拉去的速度,控制自己的压力,不至于把自己弄跨
2.实时性相对于push方式会低一些
3.消费者属于主动方,控制权更大一些
缺点:
1.消费方需要实现消息拉取的代码
2.消费速度较慢时,可能导致mq中消息积压,消息消费延迟等
总结
消费者性能较好,对实时性要求比较高的,可以采用push的方式
消费者性能有限,建议采用pull的方式
整体上来说,主要在于消费者的性能,机器的性能如果没有问题,push和pull都是可以的
大家有什么看法,可以留言一起讨论,希望本文对你有所帮助
下章将讨论在如何确保消费者至少消费一次、消息消费的幂等性处理等通用的设计。
如果你喜欢路人甲Java的文章
请分享给你的朋友
让更多的人看见
万分感谢
谈谈mq消息消费的几种方式相关推荐
- mq中消息消费的几种方式
mq系列文章 本章内容 从消费者的角度出发,分析一下消息消费的两种方式: push方式 pull方式 push方式 消息消费的过程: mq接收到消息 mq主动将消息推送给消费者(消费者需提供一个消费接 ...
- 聊聊mq中消息消费的几种方式
mq系列文章 对mq了解不是很多的,可以看一下下面两篇文章: 聊聊mq的使用场景 聊聊业务系统中投递消息到mq的几种方式 聊聊消息消费的几种方式 如何确保消息至少消费一次 如何保证消息消费的幂等性 本 ...
- mq消费的几种方式(从消费者角度出发)
从消费者的角度出发,分析一下消息消费的两种方式: push方式 pull方式 push方式 消息消费的过程: 1. mq接收到消息 2. mq主动将消息推送给消费者(消费者需提供一个消费接口) mq属 ...
- redis实现消息队列的几种方式及其优劣
概述 常用的消息队列有,rabbitMq.kafka.RocketMq.ActiveMq等.这些消息队列需要独立安装部署,作为一个中间件来提供服务,虽然有着高性能.高可靠的优点,但是额外部署这些中间件 ...
- 前端后端的消息推送 7 种方式
消息推送 7 种方式 看了原文章后,自己写的笔记 参考 https://mp.weixin.qq.com/s/xQV81HiD8hkzx2wMc3ZT7A 需求 先说需求,实现一个站内信的web消息推 ...
- Redis实现消息队列的几种方式
Redis消息队列的几种方式 1 基于rpush+lpop list类似于java中的linkedList .如果插入头或者尾的话,时间复杂度为O(1),在其他地方插入需要O(n).查询也是一样.所以 ...
- javax消息队列_java实现消息队列的两种方式(小结)
实现消息队列的两种方式 Apache ActiveMQ官方实例发送消息 下载解压后拿到java代码实例 然后倒入IDE 如下: 请认真阅读readme.md文件,大致意思就是把项目打成两个jar包,然 ...
- 通过小程序积分营销工具提升用户消费的三种方式
在微信小程序的运营中,我们经常会通过小程序积分营销工具搭建积分体系去提升用户的粘性,最终实现用户的转化消费.那么,积分体系如何运营,成为我们需要思考的问题. 我们都知道,积分体系最重要的元素的就是&q ...
- NSNotification 消息通知的3种方式
1.Notification Center的概念: 它是一个单例对象,允许当事件发生时通知一些对象,让对象做出相应反应. 它允许我们在低程度耦合的情况下,满足控制器与一个任意的对象进行通信的目的. 这 ...
最新文章
- [Hive_add_8] Hive 常用参数配置
- 基于php留言本毕业设计,基于PHP校园学生论坛留言本设计与实现(MySQL)(含录像)
- 严重红色警告-虾子+维C=砒霜
- 【Jetson Nano学习笔记】2. ORB-SLAM3及ZED 2i驱动安装
- solidity数据位置-memory,storage和calldata
- mysql数据库sql语法参考_MySQL数据库SQL语法参考
- git bitbucket_如何在Bitbucket上创建新的Git存储库并查看提交的对象
- Python判断字符类型
- unique path 阶梯
- 7款Java反编译工具
- 彬彬股份牵手正极技术巨头 服装转型锂电
- Java习题练习:杨辉三角
- appium连接mumu模拟器,无法连接问题
- 默认选中 input元素默认选中设置
- python群聊聊天室程序_Python聊天室程序---基础
- PS 2021安装插件提示”无法加载,未经签署“怎么办?ps2021插件未经正确签署解决办法!
- 多目标优化拥挤距离计算
- 长沙学院计算机专业老师李彬,长沙学院2007-2008模具CADCAM_04机本教案【荐】.doc...
- Android CE DE加密小结
- pcap_findalldevs_ex 各参数简述