当前位置: 首页 > news >正文

RocketMQ 基本概念

生产者

生产者发送业务系统产生的消息给broker。RocketMQ提供了多种发送方式:同步的、异步的、单向的。

生产者组

具有相同角色的生产者被分到一组。假如原始的生产者在事务后崩溃,broker会联系
同一生产者组中的不同生产者实例,继续提交或回滚事务。

消费者

一个消费者从broker拉取信息,并将信息返还给应用。为了我们应用的正确性,提供了两种消费者类型:

拉式消费者

拉式消费者从broker拉取消息,一旦一批消息被拉取,用户应用系统将发起消费过程。

推式消费者

推式消费者,从另一方面讲,囊括了消息的拉取、消费过程,并保持了内部的其他工作,留下了一个回调
接口给终端用户去实现,实现在消息到达时要执行的内容。

消费者组

具有相同角色的消费者被组在一起,称为消费者组。它是一个伟大的概念,它完成了负载均衡和容错的目标。
就消费消息而言,它是非常容易的。

一个消费组中的消费者实例必须有确定的相同的订阅topic。

Topic

Topic是一个消息的目录,在这个目录中,生产者传送消息,消费者拉取消息。Topic与生产者和消费者之间的关系非常的宽松。
明确的,一个Topic可以有0个,1个或多个生产者向它发送消息。相反的,一个生产者可以发送不同Topic的消息。
在消费者方面,一个Topic可以被0个,1个或多个消费者组订阅。相似的,一个消费者组可以订阅1个或多个Topic,只要组内的消费者实例
保持订阅的一致性。

Message(消息)

消息是被传递的信息。一个消息必须有一个Topic,它可以理解为信件上的地址。一个消息也可以有一个可选的tag,和额外的key-value对。
例如:你可以设置业务中的键到你的消息中,在broker服务中查找消息,以便在开发期间诊断问题。

消息队列

Topic被分割成一个或多个消息队列。队列分为3中角色:异步主、同步主、从。如果你不能容忍消息丢失,我们建议你部署同步主,并加一个从队列。
如果你容忍丢失,但你希望队列总是可用,你可以部署异步主和从队列。如果你想最简单,你只需要一个异步主,不需要从队列。
消息保存磁盘的方式也有两种,推荐使用的是异步保存,同步保存是昂贵的并会导致性能损失,如果你想要可靠性,我们推荐你使用同步主+从的方式。

Tag(标签)

标签,用另外一个词来说,就是子主题,为用户提供额外的灵活性。具有相同Topic的消息可以有不同的tag。

Broker(队列)

Broker是RocketMQ的一个主要组件,它接收生产者发送的消息,存储它们并准备处理消费者的拉取请求。它也存储消息相关的元数据,
包括消费组,消费成功的偏移量,主题、队列的信息。

名称服务

名称服务主要提供路由信息。生产者/消费者客户端寻找topic,并找到通信的队列列表。

消息顺序

DefaultMQPushConsumer 被使用,你就要决定消费消息时,是顺序消费还是同时消费。

  • 顺序消费

顺序消费消息的意思是 消息将按照生产者发送到队列时的顺序被消费掉。如果你被强制要求使用全局的顺序,你要确保你的topic只有一个消息队列。

如果指定顺序消费,消息被同时消费的数量就是订阅这个topic的消费组的数量。

  • 同时消费

当同时消费消息时,消息同时消费的最大数量取决于消费客户端指定的线程池的大小。

相关文章:

  • 学习设计接口api(转)
  • 【刘文彬】EOS技术研究:合约与数据库交互
  • Altium Designer 8.0不为人知的27个技巧
  • React-redux的原理以及使用
  • Spring MVC JSP页面加载不完全的问题
  • 工程师笔记|浅析AI平台的架构设计
  • Spark 1.0.0 横空出世 Spark on Yarn 部署(Hadoop 2.4)
  • 使用docker遇到的问题
  • 武汉区块链软件技术公司:区块链将如何优化产业链?
  • echarts简单使用
  • .NET项目中存在多个web.config文件时的加载顺序
  • Linux工具性能调优系列三:swap问题定位
  • Ubuntu 12.04 root账户开启及密码重设
  • ipv6最长前缀匹配算法
  • oracle 11.2.0.1 rman异机恢复 11.2.0.3(windows X64)
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • CODING 缺陷管理功能正式开始公测
  • CSS 提示工具(Tooltip)
  • fetch 从初识到应用
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • webpack项目中使用grunt监听文件变动自动打包编译
  • windows-nginx-https-本地配置
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 关于使用markdown的方法(引自CSDN教程)
  • 机器学习学习笔记一
  • 蓝海存储开关机注意事项总结
  • 力扣(LeetCode)56
  • 每天10道Java面试题,跟我走,offer有!
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 我是如何设计 Upload 上传组件的
  • AI算硅基生命吗,为什么?
  • Hibernate主键生成策略及选择
  • Spring第一个helloWorld
  • 昨天1024程序员节,我故意写了个死循环~
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • #传输# #传输数据判断#
  • $.ajax()参数及用法
  • (06)Hive——正则表达式
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (四)JPA - JQPL 实现增删改查
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)Google的Objective-C编码规范
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .NET基础篇——反射的奥妙
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • @ModelAttribute 注解