一、场景
有两个生产者produer1、producer2,分别生产topicA和topicB的消息,topicA与topicB分别有两个消费者consumer1、consumer2。
二、commitlog
commitlog是broker消息的持久化文件,消息写入commitlog是顺序的。每条消息中记录了topic、queueId和消息主体信息。
三、consume queue
线程ReputMessageService不断读取commitlog中的新消息,根据topic和queueid将定位消息的基本信息写入consume queue中,如图中所示,topicA和topicB各有四个消息队列,ReputMessageService根据客户端指定的queueId将能定位消息的基本信息写入对应的consume queue中,如topicA的msg1和msg5写入queue1中,msg2写入queue2中。
每个主题consume queue的个数可以通过配置文件设定,默认是4个。
四、consumer
消费者根据负载均衡策略,拉去对应topic的数据进行消费