Consumer 首次请求 Broker。
- Broker 中是否有符合条件的消息
- 有
- 响应 Consumer。
- 等待下次 Consumer 的请求。
- 没有
- DefaultMessageStore#ReputMessageService#run 方法。
- PullRequestHoldService 来 Hold 连接,每个 5s 执行一次检查
- pullRequestTable 有没有消息,有的话立即推送。
- 每隔 1ms 检查 commitLog 中是否有新消息,有的话写入到pullRequestTable。
- 当有新消息的时候返回请求。
- 挂起 consumer 的请求,即不断开连接,也不返回数据。
- 使用 consumer 的 offset。
上一篇:RocketMQ[有时间整理]