跳到主要内容

二十五、RocketMQ实战:生产环境中,autoCreateTopicEnable为什么不能设置为true


本节目录

1、 现象;

2、 思考;

3、 原理;

  • 3.1 RocketMQ基本路由规则
  • 3.2 探究autoCreateTopicEnable机制
  • 3.2.1 默认Topic路由创建时机
  • 3.2.2 现象分析

1、现象

很多网友会问,为什么明明集群中有多台Broker服务器,autoCreateTopicEnable设置为true,表示开启Topic自动创建,但新创建的Topic的路由信息只包含在其中一台Broker服务器上,这是为什么呢?

期望值:为了消息发送的高可用,希望新创建的Topic在集群中的每台Broker上创建对应的队列,避免Broker的单节点故障。

现象截图如下:
 
 
正如上图所示,自动创建的topicTest5的路由信息:

  • topicTest5只在broker-a服务器上创建了队列,并没有在broker-b服务器创建队列,不符合期望。
  • 默认读写队列的个数为4。

我们再来看一下RocketMQ默认topic的路由信息截图如下:
 
从图中可以默认Topic的路由信息为broker-a、broker-b上各8个队列。

2、思考

默认Topic的路由信息是如何创建的?

1、 Topic的路由信息是存储在哪里?Nameserver?broker?;
2、 RocketMQTopic默认队列个数是多少呢?;

3、原理

3.1 RocketMQ基本路由规则