RocketMQ 工作流程

RocketMQ 工作流程

1. 启动NameServer,NameServer启动后开始监听端口,等待Broker、Producer、Consumer连接

2. 启动Broker时,Broker会与所有的NameServer建立并保持长连接,然后每30秒向NameServer定时发送心跳包。

3. 发送消息前,可以先创建Topic,创建Topic时需要指定该Topic要存储在哪些Broker上,当然,在创建Topic时也会将Topic与Broker的关系写入到NameServer中。这步是可选的,也可以在发送消息时自动创建Topic。

4. Producer 发送消息,启动时先跟 NameServer 集群中的其中一台建立长连接,并从 NameServer 中获取路由信息,即当前发送的 Topic 的Oueue 与 Broker的地址 (IP+Port) 的映射关系。然后根据算法策略从选择一个 Oueue,与队列所在的 Broke r建立长连接从而向 Broker 发消息。

在获取到路由信息后 Producer 会首先将路由信息缓存到本地,再每30秒从 NameServer 更新一次路由信息。

5 Consumer 跟 Producer类似,跟其中一台 NameServer 建立长连接,获取其所订阅 Topic 的路由信息,然后根据算法策略从路由信息中获取到其所要消费的 Queue,然后直接跟 Broker 建立长连接,开始消费其中的消息。

Consumer 在获取到路由信息后,同样也会每30秒从 NameServer 更新一次路由信息。不同于 Producer 的是,Consumer 还会向 Broker 发送心跳,以确保Broker的存活状态。