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实战与原理解析》

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • java输出一个数组的元素_Java输出数组元素「建议收藏」

    java输出一个数组的元素_Java输出数组元素「建议收藏」publicclassMainClass{publicstaticvoidprintArray(Integer[]inputArray){for(Integerelement:inputArray){System.out.printf(“%s”,element);System.out.println();}}publicstaticvoidprintArray(D…

    2022年10月11日
  • Python学生信息管理系统课程设计报告_python做的项目管理系统

    Python学生信息管理系统课程设计报告_python做的项目管理系统1.本人第一次学python做出来的,当时满满的成就感,当作纪念!!!!!非常简单,复制即可使用代码块importjson#把字符串类型的数据转换成Python基本数据类型或者将Python基本数据类型转换成字符串类型。deflogin_user():whileTrue:register=input(‘学生姓名:’)try:…

    2022年10月10日
  • gimp教程:gimp界面介绍「建议收藏」

    gimp教程:gimp界面介绍「建议收藏」GIMP(跨平台图像处理程序)是一个开发源代码的光栅与图像编辑的先进功能,关于GIMP的界面,初学者都了解吗?下面是小编整理的关于gimp教程中gimp界面介绍,快来分享吧!gimp界面介绍:gimp图像窗口Gimp图像窗口是打开图形图像文件时图像显示的窗口,关闭窗口右上角的关闭按钮的话程序也将随之关闭。如下图所示,其窗口中包含下面几个元素:A、居于最上面的标题栏,最左面是Gimp图标(icons),中间是图像名,如果是刚开始打开无图像的话显示”GNUImageManipulatio..

  • MCP2515模块_mcp2515接收错误

    MCP2515模块_mcp2515接收错误1、在配置Linux编译选项时,开启相应的SPI选项,如下所示->DeviceDrivers->SPIsupportSPIsupport***SPIMasterControllerDrivers***-*-BitbangingSPImasterSamsungS3C24XXseriesSPI<>SamsungS3C24XXserie…

    2022年10月31日
  • 几种IO流读写文件

    几种IO流读写文件一、超类:字节流:InputStream(读入流)OutputStream(写出流)字符流:Reader(字符读入流)Writer(字符写出流)二、文件操作流字节流:FileInputStream,FileOutputStream字符流:FileReader,FileWriter(用法与字节流基本相同,不写)//1.指定要读

  • 各种关闭eslint方法总结[通俗易懂]

    各种关闭eslint方法总结[通俗易懂]1、package.json关闭eslint直接注释掉package.json文件中eslint的配置”eslintConfig”:{“root”:true,////此项是用来告诉eslint找当前配置文件不能往父级查找”env”:{“node”:true//此项指定环境的全局变量,下面的配置指定为node环境},”extends”:[//此项是用来配置vue.js风格,就是说写代码的时候要规范的写,如果你使用vs-code我

发表回复

您的电子邮箱地址不会被公开。

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