RocketMQ的长轮询消费方式

RocketMQ的长轮询消费方式1.Push推送方式(即Server端推送消息给client):当Server收到消息发送者发送过来的消息后,Server端主动把消息推送给client,这个方式实时性比较好,但是增加了Server的工作负担,对Server的性能造成影响;另外Client如果不能够及时处理Server推送的消息,也是很大的问题。2.Pull拉取方式(即Client从Server拉取消息):Client…

大家好,又见面了,我是你们的朋友全栈君。

1.Push推送方式(即Server端推送消息给client):

当Server收到消息发送者发送过来的消息后,Server端主动把消息推送给client,这个方式实时性比较好,但是增加了Server的工作负担,对Server的性能造成影响;另外Client如果不能够及时处理Server推送的消息,也是很大的问题。

2.Pull拉取方式(即Client从Server拉取消息):

Client循环的从Server拉取消息,由client控制着主动权。弊端:拉取消息的时间间隔不好设定,间隔太短循环空拉取造成资源浪费,间隔时间太长,就会增加消息消费的延迟,影响业务使用。另外需要Client拉取消息时维护offset,代码比较麻烦。

3.长轮询的消费方式

RocketMQ的消息消费方式,采用了“长轮询”方式,兼具了Push和Pull的有点,不过需要Server和Client的配合才能够实现。
即Client发送消息请求,Server端接受请求,如果发现Server队列里没有新消息,Server端不立即返回,而是持有这个请求一段时间(通过设置超时时间来实现),在这段时间内轮询Server队列内是否有新的消息,如果有新消息,就利用现有的连接返回消息给消费者;如果这段时间内没有新消息进入队列,则返回空。
这样消费消息的主动权既保留在Client端,也不会出现Server积压大量消息后,短时间内推送给Client大量消息使client因为性能问题出现消费不及时的情况。
长轮询的弊端:在持有消费者请求的这段时间,占用了系统资源,因此长轮询适合客户端连接数可控的业务场景中。

参考资料:《RocketMQ实战与原理解析》

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149529.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数据结构之栈

    一标准库stack的使用(1)stack成员函数(2)示例二C++实现栈数组实现的栈,能存储任意类型的数据

    2021年12月19日
    64
  • mysql的驱动jar包下载

    mysql的驱动jar包下载jar包链接

    2022年5月11日
    41
  • 《中国人工智能学会通讯》——9.29 点击模型开源工具及数据集

    《中国人工智能学会通讯》——9.29 点击模型开源工具及数据集

    2022年3月6日
    50
  • springboot 上传文件设置文件大小限制

    springboot 上传文件设置文件大小限制报错内容:org.springframework.web.multipart.MaxUploadSizeExceededException:Maximumuploadsizeexceeded;nestedexceptionisjava.lang.IllegalStateException:org.apache.tomcat.util.http.fileupload.impl.SizeLimitExceededException:therequestwasrejectedbe…

    2022年5月29日
    43
  • MySQL清空表数据

    MySQL清空表数据清空表数据一共有三种方式1、truncate(速度很快)自增字段清空从1开始全表清空首选2、drop直接删表…啥都没了啥都没了…………3、delete速度慢的一批自增字段不清空MySQL清空表数据命令:truncate说明:删除内容、释放空间但不删除定义,也就是数据表的结构还在。与drop不同的是,它只是清空表数据而已,它比较温柔。truncatetable表名注意:不能与where一起使用。truncate删除数据后是不可以rollback

    2022年6月14日
    33
  • 计算机系统构成及硬件基础知识

    目录数值转换R进制转十进制使用按权展开法。十进制转R进制使用短除法。二进制转八进制。二进制转十六进制。数的表示原码/反码/补码/移码浮点数运算计算机的基本组成计算机体系结构计算机体系软硬件的层次结构计算机的一些基本概念本章主要包括以下部分:数值转换 数的表示 计算机体系结构 计算机的组成 寻址方式 校验码数值转换R进制转十进制…

    2022年4月8日
    159

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号