背景
RocketMQ 源码版本 4.9.1-SNAPSHOT
下载了 RocketMQ 源码,在本地 IDE 中正常启动了 Broker 服务 和 NameServer 服务。
生产者发送消息的 demo 如下

在发送消息的过程中报错了,报错信息如下

从报错信息可以看到: **Topic 对应的路由信息没有正常获取到(Topic 名称为 TopicTest)。**也难怪,Broker 启动后没有人为地去创建 Topic 对应的队列,发送消息自然没办法获取到路由信息。
想到 Broker 有自动创建 Topic 的机制,可以通过在 Broker 的配置文件中添加如下配置:
autoCreateTopicEnable = true
复制代码
问题在于即使配置了这个参数,重启 Broker 服务之后,发送消息时还是如上的报错,因此打算仔细看看 RocketMQ 自动创建 Topic 的实现原理。
自动创建Topic机制
首先需要解决两个问题
- W1:Broker 注册路由信息方式
- W2:生产者获取路由信息的策略
本文详细介绍了RocketMQ自动创建Topic的原理,包括Broker的路由信息注册、生产者获取路由信息的过程,以及整体流程。当发送消息时,如果Topic不存在,Broker会依据配置创建Topic并同步至NameServer,生产者则利用默认主题的路由信息完成消息发送。通过理解这一机制,解决了版本不一致导致的路由信息获取失败问题。
最低0.47元/天 解锁文章
238

被折叠的 条评论
为什么被折叠?



