网站首页 > 博客文章 正文
本篇分为 RocketMQ 部署和 RocketMQ-dashboard 部署两部分,主要是 RocketMQ 部署问题较多,汇总了下网上各路大神以及官方 issue 的讨论汇总而来。
RocketMQ 部署
根据官方的快速开始 尝试在本地部署 RocketMQ;如果你是按照官方文档直接来搞,可能 90% 是不可能成功的。
我自己本地部署时遇到了绝大多数网上都遇到的问题(从 4.2.0 到 4.9.3 版本均无法直接启动),比如:
- No route info of this topic
- connect to [127.0.0.1:9876] failed
- org.apache.rocketmq.client.exception.MQBrokerException: CODE: 14
No route info of this topic
这里在官方 issue 上有讨论,而且很激烈 :github.com/apache/rock…;RocketMQ 作为 Apache 顶级项目,在 issue 中还会对 qiuck starter 有如此激烈的讨论和吐槽,是否也应该有一些反思?即使是有问题出现,也应该将详细的信息吐出来,不管是没有连接到 NameServer 还是 缺少 Topic,都应该将信息暴露给用户。从我部署来看,出现 No route info of this topic时,先通过手动创建了 Topic,没有解决。尝试看了下代码
private SendResult sendDefaultImpl(
Message msg,
final CommunicationMode communicationMode,
final SendCallback sendCallback,
final long timeout
) throws MQClientException, RemotingException, MQBrokerException, InterruptedException {
// 省略...
// 这里取到的 topicPublishInfo 里面的 messageQueue 为 空,导致 topicPublishInfo.ok 为 false
TopicPublishInfo topicPublishInfo = this.tryToFindTopicPublishInfo(msg.getTopic());
if (topicPublishInfo != null && topicPublishInfo.ok()) {
boolean callTimeout = false;
// 省略...
}
// 省略...
throw new MQClientException("No route info of this topic: " + msg.getTopic() + FAQUrl.suggestTodo(FAQUrl.NO_TOPIC_ROUTE_INFO),
null).setResponseCode(ClientErrorCode.NOT_FOUND_TOPIC_EXCEPTION);
}
复制代码
从 debug 分析来看,topicPublishInfo 里面的 messageQueue 是空的;NameServer 和 Broker 进程也都是正常的,原因在于配置存在问题,导致 NameServer 和 Broker 没有建立正常的连接关系,从而导致 NameServer 感知不到 Broker,所以拉不到信息。
因为是本地部署,并且部署 rocketmq-dashboard 确可以正常连接到集群,都可以看到 Topic 信息;所以基本排除了防火墙、内外网不通等问题干;网上有很多类似的解题思路,各位仁兄在参考时一定要结合自己的实际情况来看,不要一股脑扎进去配置。
connect to [127.0.0.1:9876] failed
这个问题也是有些莫名奇妙的,NameServer 是正常启动的,通过 telnet localhost 9876 端口也是正常的,但是官方 demo 启动时报了这个错。从网上摸索了下,得到的解决方案是:
1、不要使用官方文档的启动命令,使用如下命令代替:
sh bin/mqbroker -n localhost:9876 -c conf/broker.conf
复制代码
2、broker.conf 配置文件中增加了如下配置
namesrvAddr = localhost:9876
brokerIP1=localhost
brokerIP2=localhost
复制代码
重启启动 Broker 即可。
MQBrokerException: CODE: 14
这个异常信息给的比较靠谱:
Caused by CODE: 14 DESC: service not available now, maybe disk full
复制代码
通过异常可以非常明确的 get 到原因,就是磁盘空间不够了。我本地 mac 磁盘空间从剩余 10G ,清理到剩余 50G 之后,重新启动客户端 OK 了。
RocketMQ-Dashboard 部署
这个项目还是有点惊喜的,github.com/apache/rock… 。
部署可以参考:rocketmq.apache.org/docs/%E9%83… ;这个部署比较简单,没有 RocketMQ 那么多套路和问题,部署完成之后,界面大致如下:
作者:磊叔的技术博客
链接:https://juejin.cn/post/7143906476229132318
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
- 上一篇: RocketMQ 在使用上的一些排坑和优化
- 下一篇: RocketMQ - 搭建RocketMQ
猜你喜欢
- 2024-11-18 快速使用docker方式部署安装RocketMQ
- 2024-11-18 介绍新版RocketMQ v4.9.3 下载、安装、配置的完成过程
- 2024-11-18 docker-4:mac使用docker部署开发用rocketmq
- 2024-11-18 扩展RocketMQ 使其支持任意时间精度的消息延迟
- 2024-11-18 RocketMQ如何突破内网限制,实现内外网互通
- 2024-11-18 SpringBoot3.0 + RocketMq 构建企业级数据中台完结
- 2024-11-18 centos7安装部署RocketMQ分布式集群
- 2024-11-18 「转」Spring Cloud异步场景分布式事务怎样做?试试RocketMQ
- 2024-11-18 RocketMQ集群搭建
- 2024-11-18 RocketMQ 的持久化配置
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)