笔记之RocketMQ技术内幕(二)

一. RocketMQ发送消息的方式

有三种实现方式:可靠同步发送、可靠异步发送、单向发送

  • 同步:调用发送消息API,同步等待,知道消息服务器返回发送结果
  • 异步:调用消息发送API后马上返回,消息发送成功或失败后会在新线程中执行回调任务
  • 单向:只管发,不在乎消息是否能成功存储在消息服务器上
二. 消息发送的基本流程

验证消息、查找路由、消息发送

  1. 消息默认以同步的方式发送,默认超时时间为3s
  2. 查找主题路由信息:如果生产者中缓存了topic的路由信息,如果该路由信息包含了消息队列,则直接返回该路由信息,如果没有缓存或没有包含消息队列,则向NameServer查询该topic的路由信息,并更新本地路由表。3. 消息生产者每隔30s会从NameServer更新路由表
三. 消息发送异常机制
  • 重试与Broker规避
    可以保证消息发送的高可用。Broker规避,在一次消息发送的过程中,如果发送过程中失败,那么在接下来的一段时间内不会选择该消息队列所在的Broker。
四. 存储

RocketMQ主要的存储文件包括:Comitlog文件、ConsumerQueue文件、IndexFile文件
RocketMQ将所有主题的消息存储在同一个文件中,确保消息发送时顺序写文件,尽最大的能力确保消息发送的高性能与高吞吐量。

  • Comitlog:消息存储文件,所有消息主题的消息都存储在CommitLog文件中
  • ConsumeQueue:消息消费队列,消息到达CommitLog文件后,将异步转发到消息消费队列,供消息消费者消费
  • IndexFile:消息索引文件,主要存储消息Key与Offset的对应关系
  • 事务状态服务:存储每条消息的事务状态
  • 定时消息服务:每一个延迟级别对应一个消息消费队列,存储延迟队列的消息拉取进度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值