RocketMQ 学习

消息队列

参考官方文档:https://rocketmq.apache.org/zh/docs/

基本概念

  1. 主题(Topic):是消息传输和消息存储的顶级容器,不是实际的消息容器,而是一个逻辑上的概念,用于区分不同业务消息的标识,内部包含:消息队列(MessageQueue)消息(Message)
  2. 消息类型(MessageType):按照消息的传输特性的不同而定义的不同类型,用于类型管理和权限校验,包含了:普通消息(Normal)、顺序消息(FIFO)、事务消息(Transaction)和定时/延时消息(Delay)。
  3. 消息队列(MessageQueue):是消息传输和消息存储的实际容器,是消息存储的最小存储单元;一个主题由多个队列组成;由于队列的先进先出特性,可以通过Offset来标记消息在队列中的位置以及确定消息之间的顺序;还可通过Offset去读取任意数量的消息,以实现聚合读取、回溯读取的特性。
  4. 消息(Message):最小的数据传输单元,生产者将业务数据的负载和扩展属性包装到消息中发送到服务端进行存储,然后按照相关语义和订阅关系投递到消费者进行消费;特性:不可变性,持久性。
  5. 消息视图(MessageView):就是面向开发的一个消息只读接口,可以查看不能修改。
  6. 消息标签(MessageTag):是基于主题在进行细分的一个标签,就是给同一主题的消息打上不同的标签,然后消费者如果订阅了一个主题,然后它会根据它想要的标签进行筛选,以此来实现细粒度过滤。
  7. 消息位点(MessageQueueOffset):可以理解为每一个消息对于队头位置的偏移量,那么每一个消息都可以确定一个Offset,作用:可以通过记录消费的Offset来确保不会重复消费消息,而且可以通过改变消费Offset的来重新消费某个消息。
  8. 消费位点(ConsumerOffset):即消费者消费的位置,一定是满足 MinOffset <= ConsumerOffset <= MaxOffset,如果超出这个范围,则服务端会强制将 ConsumerOffset 定位到合法的 Offset。
  9. 消息索引(MessageKey):相当于数组下标的索引,可以通过O(1)的时间访问到索引对应的消息。
  10. 生产者(Producer):即消息的生产者,作用是构建并传输消息到服务器的实体,按照要求将业务消息数据封装并发送给服务器,就是纯纯给服务器干活的;那干活也有自己的方式:通过API接口去传递信息,同样可以进行批量传输的设置,还有就是发送事务消息,这时候生产者就不能够发完之后撒手不管了,这之间有一个半事务消息的概念,此时不算发送完成,生产者要去执行本地事务消息,再向服务器进行二次事务确认,这时候生产者心想:发送个消息这么麻烦,但是看到自己生产的消息能够到达相应的位置不至于仍在半路没人处理强啊,还是会很欣慰的!
  11. 事务检查器(TransactionChecker):生产者用于执行本地事务检查和异常事务恢复的监听器;就是刚才说的生产者发送消息后不能不管不问,需要通过事务检查器来监听自己生产的消息是否被正确应用了;流程:生成一条半事务消息 ==> 执行本地事务 ==> 提交事务状态 ==> if(Broker未收到事务状态) ==> 生产者进行回查 ==> 回查相应 ==> Broker 根据返回状态处理消息。
  12. 事务状态(TransactionResolution):包含事务提交、事务回滚、事务未决,服务端通过判断事务状态来控制事务消息是否应该提交。
  13. 消费者分组(ConsumerGroup):类似于主题(Topic),是一个逻辑概念,每一个分组通过在服务端注册的订阅关系规则获得Topic,Topic 与 消费者分组 是多对多关系;同时能够设置投递消息的顺序;能够设置消息重试策略。
  14. 消费者(Consumer):类似于队列(MessageQueue),是接受并消费信息的实体,必须关联到一个消费者组,同一个分组的消费者的行为约束要相同。
  15. 订阅关系(Subscription):就是针对接受到的消息消费者该怎么处理,取舍哪些的一个规则,同时也利用了消息过滤,并维护了消费状态。
  16. 消息过滤:就是根据订阅上面介绍的消息标签来进行过滤筛选,这个工作由服务端来完成。
  17. 重置消费位点:就是重新设置消费者要从哪里开始进行信息的消费。
  18. 消息轨迹:一条消息从生产者到消费者走过的路记录下来,方便排查错误信息。
  19. 消息堆积:供多需少,生产的速度大于消费的速度,那些没有来得及消费的信息便堆积在了一起。
  20. 事务消息:高级消息类型,保证消息生产和本地事务保持一致性。
  21. 定时/延时消息:高级消息类型,相当于设置定时任务,到达指定时间之后才能够被消费者消费。
  22. 顺序消息:按照业务中发送消息的顺序去消费,实现业务中的顺序处理;就比如抢票,前面提交消息的人一定比后面提供消息的人先得到票。

以上是对RocketMQ中的基本概念的理解,相信了解了这些之后,再去理解其中的业务逻辑会更加得心应手,以上这些概念就类似于零部件,然后记下来就是如何将零件组装起来造出来一个产品,会持续更新~

### RocketMQ学习教程:从入门到精通 #### 了解RocketMQ基础概念 RocketMQ 是一个开源的分布式消息队列系统,最初由阿里巴巴集团开发并于2012年开源。该系统提供了可靠的消息传递服务,能够支持大规模并发消息发布和订阅,具备低延迟、高吞吐量以及高可用性的特点[^2]。 #### 安装与配置环境 为了更好地理解和实践RocketMQ的功能,安装并配置好运行环境是非常重要的一步。对于可视化管理界面的选择,可以考虑使用Apache官方维护的一个名为`rocketmq-dashboard`的项目来监控和管理系统状态;另一个可选方案则是通过`release-rocketmq-console-1.0.0`版本提供的控制台工具来进行日常运维工作。这两个面板的操作方式基本一致,在完成下载后(例如放置于路径 `D:\develop\rocketmq-externals-release-rocketmq-console-1.0.0`),可以通过IDEA等集成开发环境中跳过测试环节直接利用Maven构建项目[^1]。 #### 启动Broker实例 当准备好所有必要的组件之后,就可以按照如下命令行指令启动Broker节点: ```bash nohup sh bin/mqbroker -n localhost:9876 & ``` 这将会以后台进程的方式执行,并且可以在指定的日志文件中追踪其运行状况: ```bash tail -f ~/logs/rocketmqlogs/broker.log ``` #### 掌握核心特性 深入理解RocketMQ的核心特性和高级应用是成为专家的关键所在。比如掌握如何实现消息的有序发送、处理事务型消息等功能,这些都是在实际生产环境中非常有用的技术点。此外,还需要熟悉不同类型的消费者模式及其适用场景,以便根据具体需求选择最合适的设计策略。 #### 实践案例研究 最后但同样重要的是参与真实的项目练习或是模仿一些典型的应用场景,如电子商务平台中的订单处理流程、实时数据分析管道建设等等。这些实践活动不仅有助于巩固理论知识,更能培养解决复杂问题的能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值