RocketMQ主从消息的处理流程:
消息到主服务器会从commitLog类中的topicQueueTable<String /* topic-queueid*, Long/*offset*/>表中获取到这条消息在这个队列的偏移量,这个偏移量就是后面进入comsumeQueue的logicoffset。每来一条消息这个值都会加1。
从服务器数据中的消息的logicoffset已经在主服务器设置好了,所以从服务器不会更新这个数据结构,当主从切换后会发生数据不一致的情况。如下
RocketMQ主从消息的处理流程:
消息到主服务器会从commitLog类中的topicQueueTable<String /* topic-queueid*, Long/*offset*/>表中获取到这条消息在这个队列的偏移量,这个偏移量就是后面进入comsumeQueue的logicoffset。每来一条消息这个值都会加1。
从服务器数据中的消息的logicoffset已经在主服务器设置好了,所以从服务器不会更新这个数据结构,当主从切换后会发生数据不一致的情况。如下