RocketMQ之消费者获取消息的两种模式

Springcloud集成RocketMQ,实现生产者和消费者案例 整合springcloud,实现生产和消费 案例实现如何携带Key和Tag的方式,请参考 阅读详情

 

Push&Pull

 

push:客户端与服务器建立连接后,当服务器有消息时,服务器将消息推送到客户端

pull:客户端不断轮询请求服务端,来获取新的消息

 

 

RocketMQ中的Push&Pull

 

RocketMQ中都是采取消费端主动拉取的方式,即consumer轮询从broker中拉取消息。原因是服务器如果主动给客户端推送消息的话,当客户端足够多,服务器端的压力会无限制的增大,因此RocketMQ在实现时摒弃了这种办法。

RocketMQ中Push和Pull的含义:

  •  Push

consumer把轮询过程封装了,并注册到MessageListener监听器中,对于offset进行自动保存。取到消息后,唤醒MessageListener的consumeMessage()来消费,这种触发方法才会被调用的方式对用户而言感觉就像是被推送过来。

  • Pull

这种方法非常少用,它在取消息的过程中需要用户自己手动操作。首先在要消费的Topic中拿到MessageQueue的集合,遍历MessageQueue集合,然后针对每一个MessageQueue批量取消息,每取完一次,记录该队列下一次要取的开始offset,直到取完一整个MessageQueue,再换另一个MessageQueue。

 

 

长轮询

 

既然RocketMQ本质上是Pull方式拉取消息,那它是如何保证消息实时性的呢? 长轮询

长轮询是指请求的过程中,若是服务器端数据并没有更新,那么则将这个连接挂起,直到服务器端推送新的数据再返回,然后进入循环周期。

客户端像传统轮询一样从服务端请求数据,服务端会阻塞请求,而不会立刻返回,直到有数据或超时才返回给客户端,然后关闭连接,客户端处理完响应信息后再向服务器发起新的请求。

 

 

RocketMQ-消费者究竟是推还是拉? 网络交互过程中,两个节点需要进行交互,假设两个节点称为 A、B,A 节点需要获取到 B 节点产生的数据,需要怎么做呢?有两种方式:推:B 在存在新消息时把新消息主动推动给 A 节点拉:A 节点定期轮询 B 节点中有没有新消息那么两种方式哪种更好呢?推:推相较于拉不需要轮询,但是推具有不可靠性网络交互中,例如微信,用户 A 向用户 B 发送消息,需要先把消息发送给微信服务器再由微信服务器转发给用户 B。 阅读详情

相关推荐

RocketMQ 核心概念扫盲篇,java面试项目中的技术难点

消息客户端,包括 Producer(消息发送者)和 Consumer(消费消费者)。客户端在同一时间只会连接一台 NameServer,只有在连接出现异常时才会向尝试连接另外一台。客户端每隔 30s 向 NameServer 发起 Topic 的路由信息查询。 温馨提示:NameServer 是在内存中存储 Topic 的路由信息,持久化 Topic 路由信息的地方是在 Broker 中,即 ${ROCKETMQ_HOME}/store/config/topics.json。 在 RocketMQ 4.

m0_64383736的博客 711

RocketMQ之消息刷盘和读取

    上篇我介绍了RocketMQ消息存储结构,那Producer是怎么把消息存到文件中,Consumer怎么读取数据呢?RocketMQ的消息是存储到磁盘上的,这样既能保证断电后恢复, 又可以让存储的消息量超出内存的限制。RocketMQ为了提高性能,会尽可能地保证磁盘的顺序写。 Producer消息刷盘 消息在通过Producer写入RocketMQ的时候,有两种写磁盘方式,分布式同步刷盘和异步刷盘。 1、同步刷盘(更安全,不会丢消息) 在返回写成功状态时,消

戴着红领巾走世界 908

RocketMQ入坑指南(四):消费者的使用方式

在这里先祝福大家新年快乐!因为假期原因,距离上一篇的生产者教程已经过了很久,今天是上班的第一天,我们继续分享RocketMQ的第四篇教程,主要介绍消费者相关的知识。消费者组:一个逻辑概念,在使用消费者时需要指定一个组名。一个消费者组可以订阅多个Topic。消费者实例:一个消费者组程序部署了多个进程,每个进程都可以称为一个消费者实例。订阅关系:一个消费者组订阅一个Topic的某一个 Tag,这种记录被称为订阅关系。实际使用中,要保证消费订阅关系一致,一个消费者组中的订阅Topic和Tag必须一致。

u014374743的博客 5147

RocketMQ 消息接受流程

基于 RocketMQ 4.2.0 版本进行的源码分析。本篇讲述 RocketMQ 消息接受流程。

CoderChronicle的博客 1889

RocketMq 消费消息的两种方式 pull 和 push

在RocketMQ中一般有两种获取消息的方式,一个是拉(pull,消费者主动去broker拉取),一个是推(push,主动推送给消费者) 区别是: push方式里,consumer把轮询过程封装了,并注册MessageListener监听器,取到消息后,唤醒MessageListener的consumeMessage()来消费,对用户而言,感觉消息是被推送过来的。 pull方式里,取消息的过程需要...

congge 2万+

RocketMQ 消费者监听模型 解析——图解、源码级解析

文章目录 前面已经把RocketMQ发送消息的主要流程梳理了一遍,接下来我将介绍消费者消费消息的源码及流程,主要包含但不仅限于一下内容: 消息消费模式 消息消费的流程 消费者负载均衡算法 消费失败如何进行重试 消息如何进行重新投递 ...

如切如磋,如琢如磨 3510

【RocketMQ】【源码】消息拉模式分析

RocketMQ有两种获取消息的方式,分别为推模式和拉模式。推模式在一文中已经讲过,虽然从名字上看起来是消息到达Broker后推送给消费者,实际上还是需要消费向Broker发送拉取请求获取消息内容,推模式对应的消息消费实现类为消息推模式的详细过程可参考,接下来我们看一下拉模式。对比上面推模式进行消费的例子,从使用方式上来讲,。拉模式在使用方式上,,所以叫做拉模式。

S-H_A-N 2091

强化学习-动态规划

动态规划(dynamic programming)是程序设计算法中非常重要的内容,能够高效解决一些经典问题,例如背包问题和最短路径规划。动态规划的基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到目标问题的解。动态规划会保存已解决的子问题的答案,在求解目标问题的过程中,需要这些子问题答案时就可以直接利用,避免重复计算。本章介绍如何用动态规划的思想来求解在马尔可夫决策过程中的最优策略。

qq_45481856的博客 2113

RocketMQ的消费者是如何进行消息消费的?

拉取模式:消费者主动向 Broker 请求消息,适合需要精确控制消息获取时间的场景。推送模式:Broker 主动将消息推送给消费者,简化了消费过程,适合大多数场景。无论采用哪种模式,都需要确保消费者的稳定性和可靠性,包括处理消息时的异常情况和重试机制,以及适时地更新消费偏移量以避免重复消费或丢失消息。

qq_33240556的博客 1066

【万字长文】学习Armv8架构虚拟化一篇就够了

这里我们将介绍一些基础的Hypervisor和虚拟化的理论知识。如果你已经有一定的基础或是已经熟悉了这些概念,可以跳过这部分内容。我们用Hypervisor这个词来定义一种负责创建,管理以及调度虚拟机(Virtual Machines, VMs)的软件。Stage 2 转换允许Hypervisor控制虚拟机的内存视图。具体来说,其可以控制虚拟机是否可以访问特定的某一块物理内存,以及该内存块出现在虚拟机内存空间的位置。这种能力对于虚拟机的隔离和沙箱功能来说至关重要。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 5320

AI人工智能与TensorFlow的教育科技应用

随着科技的飞速发展,AI人工智能在各个领域都展现出了巨大的潜力,教育领域也不例外。本文章的目的在于深入探讨AI人工智能与TensorFlow在教育科技中的具体应用,包括智能教学系统的开发、学生学习情况的评估与预测等方面。范围涵盖了从基础概念到实际项目应用的各个层面,旨在为教育科技工作者和相关研究者提供全面且深入的技术指导。本文将首先介绍AI人工智能和TensorFlow的核心概念及其联系,让读者对相关技术有基本的了解。接着详细讲解核心算法原理和具体操作步骤,并结合数学模型和公式进行深入分析。

AI智能探索者的博客 1698

一条消息多个系统_面试高频:RocketMQ消费者是如何获取消息的?

消费者组首先我们了解一个概念,什么是消费者组。消费者组你就可以把它理解为,给一组消费者起一个名字。假设我们有一个订单Topic名字是OrderTopic,然后库存系统和积分系统都要消费这个Topic中的数据,我们分别给库存系统和积分系统起一个消费组名字:stock_consumer_group、integral_consumer_group。设置消费者组名字是在代码中实现的,如下:DefaultM...

weixin_34033915的博客 493

silvaco——GaN HEMT探索

上图为输出特性曲线 ,分别是在栅压为1v、3v、5v的情况下,可以看出在1v时器件处于截止状态,只有非常小近似于0的电流通过,随着栅压逐渐增大,沟道开启,产生漏极电流。上图为栅极漏电流曲线和转移特性曲线以及其提取的参数,可以看到阈值电压为=1.30249V,当栅压为0v时,Id=8.01032e-006,当栅压为5V时,Ig=3.11627e-006。albrct.n,低场迁移率模型,bn.albrct,an.albrct是albrct模型中的参数,可以由用户自己设定。lat.temp,晶格自热模型;

weixin_61913839的博客 7618

【RocketMQ源码分析】消费者

基本使用 首先看看consumer的简单使用: public class Consumer { public static void main(String[] args) throws InterruptedException, MQClientException { // 使用consumer group初始化DefaultMQPushConsumer ...

chengbinbbs的专栏 328

奥顺居PHP测算引流SEO程序_八字风水_起名解梦_星座生肖综合门户源码

奥顺居PHP测算引流SEO程序_八字风水_起名解梦_星座生肖综合门户源码 S30新框架适合多种奥顺插件。

xl1407的博客 1754

C#【必备技能篇】Winform实现多语言切换(.resx文件的应用)

在实际的项目开发中,软件需要实现多语言切换。本文通过一个实际的例子,可以让你学习到这个技能。

星Yeah 的博客 1万+

RocketMQ学习

RocketMQ 是一款 低延迟、高并发、高可用、高可靠的分布式消息中间件。主要用来削峰填谷。 支持发布/订阅(Pub/Sub)。 在队列中按照先进先出的顺序传递。 支持拉(pull)和推(push)两种消息模式。 RocketMQ 架构 Name Server:注册中心。 Broker:消息中转角色,负责存储消息,转发消息。Broker启动后需要将自己注册到Name Server,随后每隔30s定期向Name Server上报Topic路由信息。分为 Master Broker 和 Slave Bro

qq_41056410的博客 2264

电化学-NanoStat-开源系统的使用说明

本文主要介绍了NanoStat开源系统的使用方法,从硬件打板、设备组装、软件安装3个层次进行了详细说明。整个流程根据作者提供的视频能够很好的完成,不需要太多的技术,对刚入门的新手是一个不错的练手项目。其次软件还有很大的优化空间,能够进一步提高系统的精度,对之后类似恒电位仪系统的开发也有很大的借鉴意义。

分享技术笔记,希望对大家能够有一定的帮助,同时也通过归纳总结提升自己的个人能力。 2005

RocketMQ(七)消息消费

Rebalance即再均衡,指的是,将⼀个Topic下的多个Queue在同⼀个Consumer Group中的多个Consumer间进行重新分配的过程。Rebalance机制的本意是为了提升消息的并行消费能力。例如,⼀个Topic下5个队列,在只有1个消费者的情况下,这个消费者将负责消费这5个队列的消息。如果此时我们增加⼀个消费者,那么就可以给其中⼀个消费者分配2个队列,给另⼀个分配3个队列,从而提升消息的并行消费能力。

爱是与世界平行 1616

农作物生长模型:数学建模与实战案例

在本篇博客中,我们介绍了农作物生长模型的基本原理,并结合Matlab代码和实战案例,演示了如何应用数学建模技术进行农作物生长模型的研究与应用。农作物生长模型在农业领域具有重要意义,希望本篇博客能帮助读者更好地理解农作物生长模型的原理和应用,并在实际农业生产中取得更好的效果。

YOLO 2735

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

RocketMQ使用浅析(一)

一款由阿里巴巴集团开发,对付双11削峰填谷的消息中间件。

mathGaosi的博客 199

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

RocketMq面经(必知必会)

分布式消息队列可以提供应用解耦、流量消峰、消息分发、保证最终一致性、方便动态扩容等功能,已经成为大型互联网服务架构里标配的中间件。RocketMq具有 单机吞吐量:十万级别,吞吐量高 时效性:ms级别 等特点,深受大家的喜爱!之前面试的过程中就遇到面试官问我你是如果使用RocketMq,RocketMq内部结构等等!如果之前不了解RocketMq,看完这篇文章你会对Ro...

程序IT圈 336

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Java面试题--RocketMQ

Rabbit mqhttps://blog.csdn.net/u012562943/article/details/50349603Rocket mqhttps://www.jianshu.com/p/824066d70da8Active mqhttps://blog.csdn.net/liuyuanq123/article/details/79109218采用MQ的优点是:1)不需要预留buffer,上游任务执行完,下游任务总会在第一时间被执行2)依赖多个任务,被多个任务依赖都很好处理,只需要订阅相关消息

m0_67392182的博客 341

RocketMQ介绍

RocketMQ是一个分布式开放消息中间件,底层基于队列模型来实现消息收发功能。RocketMQ集群中包含4个模块:Namesrv, Broker, Producer, Consumer。 Namesrv: 存储当前集群所有Brokers信息、Topic跟Broker的对应关系。 Broker: 集群最核心模块,主要负责Topic消息存储、消费者的消费位点管理(消费进度)。 Producer: 消息生产者,每个生产者都有一个ID(编号),多个生产者实例可以共用同一个ID。同一个ID下所有实例组成一个生产者

pengjianglilive的专栏 197

RocketMQ-消息消费模式 顺序消费

微服务笔记

m0_62434717的博客 8380
上一篇: RocketMQ之分布式事务消息
下一篇: RocketMQ之消息队列模式
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值