首页 > 其他分享 >rocketmq--push、poll、simple模型的区别

rocketmq--push、poll、simple模型的区别

时间:2024-01-24 15:11:58浏览次数:31  
标签:场景 消费者 -- 拉取 simple 消费 消息 push RocketMQ

RocketMQ提供了几种不同类型的消费者,以满足不同使用场景的需求。以下是RocketMQ中三种主要消费者类型的原理和区别:

  1. PushConsumer(推模式消费者)

    • 原理:PushConsumer是一种被动接收消息的消费者。Broker(消息服务器)将消息推送给消费者,消费者监听指定的Topic和Tag。当消息到达时,Broker会自动将消息推送给消费者。消费者实现一个监听器接口,用于处理接收到的消息。
    • 特点:简单易用,适合大多数使用场景。内部实际上是采用长轮询的Pull方式来获取消息,然后封装成Push的方式提供给开发者使用。
    • 使用场景:适用于大部分标准的消息消费场景,特别是实时性要求高的场景。
  2. SimpleConsumer(简单消费者)

    • 原理:SimpleConsumer是RocketMQ 4.x版本引入的一种新的消费模式,旨在简化消费者的使用。它提供了一种更为简洁的API来消费消息,内部仍然是使用PushConsumer实现的。
    • 特点:API简单,使用方便,隐藏了许多底层细节,对新手更为友好。
    • 使用场景:适用于对RocketMQ不是非常熟悉,或者不需要高度定制化消费逻辑的开发者。
  3. PullConsumer(拉模式消费者)

    • 原理:PullConsumer是一种主动获取消息的消费者。消费者主动向Broker发送请求来拉取消息,并且可以自己控制拉取的频率和数量。拉取到消息后,消费者需要自己处理消息消费和确认。
    • 特点:灵活性高,可以精细控制消息的拉取和消费,适用于需要精细控制消费行为的场景。
    • 使用场景:适用于对消息消费有特殊要求的场景,比如需要精细控制消费速率、批量处理消息或者特殊的消息过滤逻辑等。

总结:

  • PushConsumer是最常用的消费者类型,适合大多数场景,它把消息拉取的复杂性隐藏起来,为开发者提供了一个相对简单的消息消费模型。
  • SimpleConsumer是为了简化API而设计的,适合简单的消费场景和对RocketMQ不是很熟悉的用户。
  • PullConsumer提供了最大的灵活性,适合需要精细控制消息消费过程的高级用户。开发者需要自己处理消息的拉取、消费和确认,这也意味着需要编写更多的代码来管理这些细节。

在实际应用中,开发者应根据具体的业务需求和消费场景选择最合适的消费者类型。

标签:场景,消费者,--,拉取,simple,消费,消息,push,RocketMQ
From: https://www.cnblogs.com/xylfjk/p/17984733

相关文章

  • 【整活】浅谈如何在ARC中消耗人品
    ARC170,启动!这个A不是傻逼题?看我秒了它。自信不编译!先交一发。欸欸欸这个样例为啥输出2啊?啊?原来还要输出最小操作次数啊,这下起猛了。改改改,写写写,好好好终于过了。白吃一发罚时。这个B和A是不是放反了啊!看来真是手速场了。写写写,我怎么这都能写挂啊!急急急,改改改,终于过样例了,交!你......
  • 达梦对数据表添加列和删除列优化测试
    背景需求近期项目中碰到一个问题,涉及到应用版本更新,每次更新,就需要对业务系统中上千个表进行增加列或删除列的操作,每个表数据量都比较大,对一个表增加一个列就需要几分钟,导致整个升级需要十几个小时,而同样的在oracle只需要半个小时完成,如果涉及到大版本更新,一次跟新就需要往表添加......
  • 四、掌握ArgoCD:安装、Gitlab集成和RBAC配置以实现无缝持续部署
    Gitlab集成    然后点击提交(saveapplication),将得到应用创建后的信息:  注册完成后,我们可以看到应用现在只有0个Clients,即还没有任何实例作为这个Application的实例进行认证:但不管怎么说,应用注册这一步我们算成功完成啦!GiveMeFive~用如下命令编辑con......
  • containerd 像Docker一样丝滑操作镜像【转】
    containerd像Docker一样丝滑操作镜像• 我们知道DockerCLI工具提供了需要增强用户体验的功能,containerd同样也提供一个对应的CLI工具:ctr,不过ctr的功能没有docker完善,但是关于镜像和容器的基本功能都是有的。接下来我们就先简单介绍下ctr的使用。➜  ~ ctrN......
  • leedcode 二进制求和
    自己写的classSolution:defaddBinary(self,a:str,b:str)->str:a_len=len(a)b_len=len(b)ifa_len<b_len:temp=bb=aa=tempa_len=len(a)b_len=len(b)b_li......
  • 独立开发者出海去,四大关键策略以提升你的应用成功率! 审核中
    当独立开发者将他们的爱好变为事业时,他们面临着比以往更多的挑战。本文将介绍四个关键的坑,希望能够帮助开发者避免障碍,顺利前行。(solo独立开发者社区)1.切勿贪多嚼不烂在开发一款规模庞大且复杂的移动应用时,很容易陷入过度设计的境地。因此,开发者需要确保手头的资源足够应对当......
  • [转]JavaScript:解决计算精度问题/mathjs/bignumber.js/big.js/decimal.js
    原文地址:JavaScript:解决计算精度问题/mathjs/bignumber.js/big.js/decimal.js_js计算精度问题-CSDN博客一、计算精度现象举例举例1、加法 举例2、减法 举例3、乘法 举例3、除法 二、JS为什么会有计算精度的问题JavaScript内部只有一种数字类型Number,也就是说,Java......
  • 绿联DH2600 docker基本命令
    查看容器(运行中的Containers)dockerps或dockercontainerls查看所有容器dockerps-a或dockercontainerls--all进入容器(ubuntu系统)dockerexec-it容器id/bin/bash或dockerattach容器id注:attach进入后exit退出会关闭容器。可以通过:ctrl+P+Q挂起容......
  • 【中介者模式(Mediator)】使用Java实现中介者模式
    引言中介者,何为中介者,顾名思义就是我们的在处理A和B之间的关系的时候,引入一个中间人,来处理这两者之间的关系,例如生活中我们需要去租房,买房,都会有中介,来处理房东和租客之间的协调关系,这个就是中介者,落实到具体的代码中呢,就像我们的Controller可能会依赖很多的Service层面......
  • k8s~istio的安装与核心组件
    安装istio在线安装:https://istio.io/latest/docs/setup/getting-started/#download或者直接在这里下载:https://github.com/istio/istio/releases/tag/1.20.2$curl-Lhttps://istio.io/downloadIstio|ISTIO_VERSION=1.20.2TARGET_ARCH=x86_64sh-$cdistio-1.20.2$e......