随手记:解决后会更新解决方案。
没用过RocketMQ ,自己搞着玩时,在发送消息时后台报错“Caused by No route info of this topic”。
- 根据官方文档得到的原因
- 将消息发送到一个路由信息对生产者不可用的主题时,就会发生这种情况。
- 解决思路:
- 确保生产者可以连接到名称服务器并且能够从中获取路由元信息;
- 确保名称服务器确实包含主题的路由元信息。 您可以使用管理工具或 Web 控制台通过 TopicRoute 从名称服务器查询路由元信息;
- 确保您的 Broker 将心跳发送到您的生产者正在连接的同一 NameServer 列表;
- 确保主题的权限为6(rw-),或至少为2(-w-)---(我不是很理解==!)
嘿嘿嘿嘿嘿嘿嘿嘿嘿~~~~~~~~~~~傻笑一波。太尴尬了
事情是这样的这两天比较忙,就今天下午闲了一点,点了一根利群之后好好的看了下RocketMQ 的流程图如下:
因为我是第一次接触 RocketMQ,我总结下我的原因:
1、我本地直接双击 mqnamesrv.cmd 、mqbroker.cmd 启动的。(没有指定IP)
2、application.yaml 中也设置了 ’‘name-server: 127.0.0.1:9876’‘,这样是本地启动没问题的。
3、问题源头在这---》配置 Spring Cloud Stream 配置项 和 Binding 配置项 指定的name-server是另一个IP。从’127.0.0.1:9876’服务器中肯定找不到 Binding 配置项中配置的主题。
解决方案:
1、我是要连接远程MQ服务器的,文件配置中肯定将相关的IP指定到远程IP。
2、CMD黑框进入MQ的bin文件夹中执行命令:(先启动mqnamesrv,后启动mqbroker)
start mqnamesrv.cmd -n xxx.xxx.xx.xx:9876
start mqbroker.cmd -n xxx.xxx.xx.xx:9876
总结一下子:原因就是不会这些东西,不知道流程怎么走的。哈哈哈哈