接下来看下
executeOnTimeup( )
里面具体干了什么:
public void executeOnTimeup() {
ConsumeQueue cq =
ScheduleMessageService.this.defaultMessageStore.findConsumeQueue(TopicValidator.RMQ_SYS_SCHEDULE_TOPIC,
delayLevel2QueueId(delayLevel));
首先根据topic,queueId找到对应的queue(这和我们之前学习的一致,一个topic下面有多个queue)
要继续往下看,那我们又得先了解下ConsumeQueue了:
ConsumeQueue
图示
其实ConsumeQueue就是下面这几个queue1 queue2 等
producer把消息塞进ConsumeQueue,consumer从ConsumeQueue中拉取消息消费:
或者也可以这样画:
每个 Topic 在Broker 端都会有多个消费队列,Producer每次都会选择一个ComsumeQueue发送消息,Consumer同样也会每次都选择一个ComsumeQueue拉取消息进行消费。