Apache RocketMQ 从入门到实战Broker 发送 ACK 消息,告知消费端已成功消费到 哪条消息,Broker 收到消息消费进度反馈后,首先存储在内存中,然后定时持久化到 consumeOffset.json 文件中。备注:关于消息消费进度管理更多的实现细节,建议查阅 笔者所著的《RocketMQ 技术内幕》。 我们先看一下客户端向服务端反馈消息消费进度时如何选择 Broker。 因为主服务的 brokerId 为 0,默认情况 Broker 端,当主服务器正常时,消息消费进度文 件存储在主服务器,那提出如下两个问题: 1. 消息消费端在主服务器存活的情况下,会优先向主服务器反馈消息消费进度,那从服务 器是如何同步消息消费进度的。 2. 当主服务器宕机后则消息消费端会向从服务器反馈消息消费进度,此时消息消费进度如 何存储,当主服务器恢复正常后,主服务器如何得知最新的消息消费进度。 为了解开上述两个疑问,我们优先来看一下 ,RocketMQ 提供了两种机制来确保 不丢失消息消费进度。 第一种,消息消费者在内存中存在最新的消息消费进度,继续以该进度去服务器拉取消 息后,消息处理完后,会定时向 Broker 服务器反馈消息消费进度,在上面也提到过,在反 馈消息消费进度时,会优先选择主服务器,此时主服务器的消息消费进度就立马更新了,从 服务器此时只需定时同步主服务器的消息消费进度即可。 本文来自『中间件兴趣圈0 码力 | 165 页 | 12.53 MB | 1 年前3
消息中间件RocketMQ原理解析 - 斩秋部署结构的会有多个 HAConnection 实例, Master 构建 HAConnection 时会构建向 slave 写入数据服务线程对象 WriteSocketService 对象 和读取 Slave 反馈服务线程对象 ReadSocketService 4.1 WriteSocketService 向 slave 同步 commitLog 数据线程, slaveRequestOffset 通过 netty 写入响应 6 processResponseCommand 接收响应处理 当 client 向 server 发送请求的时候,server 处理后向 client 反馈处理结果。 根据 RemotingCommand 的 opaque,从缓存中取出对应的 ResponseFuture ResponseFuture 设置响应对象0 码力 | 57 页 | 2.39 MB | 1 年前3
共 2 条
- 1













