记录一下RocketMQ中遇见的 连环大坑!!希望你遇不到这些问题

目录

环境:Win10  , 不是 linux

首先我遇见的第一个问题是:

No route info of this topic

问题原因:

PS: 64位系统环境下,如果软件在安装时安装路径默认c:\progarmfiles即为64位,默认c:\progarmfiles(x86)即为32位应用程序。带(x86)的文件夹是默认用来安装32位软件的。

第二个问题 sendDefaultImpl call timeout、server is busy or broker

 解决方法:

问题三:broker闪退、或者根本起不来

******** 解决办法 (这个可以解决无法启动broker的问题)*******:

broker.conf 配置参考


环境:Win10  , 不是 linux

网上五花八门的方法几乎都试了一般,最后排除法解决了这些错误,耗时半天多。。因此写下此博客,希望能帮到遇见这些大坑的人

首先我遇见的第一个问题是:

No route info of this topic

org.apache.rocketmq.client.exception.MQClientException: No route info of this topic

(PS:这个坑我专心解决了一个下午,所以忘记截图了。。。)

问题原因:

1、关闭电脑防火墙

2、调整 runbroker.cmd 、 runserver.cmd  运行内存(按需调整,我是测试环境,小点无所谓) 

如下:

runbroker.cmd

runserver.cmd 

3、 端口被占用:RocketMQ中的broker默认使用10911和10909端口,如果这些端口已经被其他应用程序占用,就会导致broker启动失败。

4、配置文件错误:RocketMQ中的broker需要通过配置文件来指定一些参数,如果配置文件中存在错误或者缺少必要的参数,就会导致broker启动失败。

5、内存不足:如果系统内存不足,就会导致broker启动失败。

6、磁盘空间不足:如果磁盘空间不足,就会导致broker无法写入数据,从而导致启动失败。

7、网络问题:如果网络连接不稳定或者存在防火墙等问题,就会导致broker无法正常通信,从而导致启动失败。

8、Java版本问题:RocketMQ需要使用Java 8或以上版本,如果使用了低于Java 8的版本,就会导致启动失败。

9、其他问题:还有一些其他的问题,比如操作系统版本不兼容、文件权限不足等,也可能导致broker启动失败。

PS: 64位系统环境下,如果软件在安装时安装路径默认c:\progarmfiles即为64位,默认c:\progarmfiles(x86)即为32位应用程序。带(x86)的文件夹是默认用来安装32位软件的。

我是由于jdk是32位的,改成64位就好了

第二个问题 sendDefaultImpl call timeout、server is busy or broker

RemotingTooMuchRequestException: sendDefaultImpl call timeout

以及

 MQBrokerException: CODE: 1 DESC: create mapped file failed, server is busy or broker

 解决方法:

查看jdk发现是32位的,换成64位就OK了  (天坑啊!!!!真就是不给提示,全靠排除法!)

问题三:broker闪退、或者根本起不来

******** 解决办法 (这个可以解决无法启动broker的问题)*******:

c:/user/用户名/store,将这个目录和目录下 所有文件全部删除

 由于mq是持久化的保存在磁盘上的,如果不配置默认是在 C盘下 c:/user/用户名/store

在mq/bin目录下执行 start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true 命令即可启动broker

PS:如何看mq保存在哪(Answer From GPT)

         在RocketMQ中,持久化的消息默认是保存在磁盘上的,具体的保存路径取决于RocketMQ的配置文件中设置的存储路径。

        RocketMQ的默认存储路径是在$HOME/store目录下。其中,$HOME表示RocketMQ的安装目录。可以通过查看RocketMQ的配置文件来确认默认的存储路径。在RocketMQ的安装目录下,可以找到一个名为conf的文件夹,其中包含了RocketMQ的配置文件。打开broker.conf文件,搜索storePathRootDir可以找到默认的存储路径配置。

        也可以在配置文件中自定义存储路径,以满足需求。在broker.conf文件中,可以修改storePathRootDir的值来指定想要的存储路径。

        另外,如果使用Docker容器来运行RocketMQ,存储路径可能会有所不同。可以查看Docker容器的相关配置来确定存储路径的设置。

        总结起来,RocketMQ的持久化消息默认保存在磁盘上的默认存储路径是$HOME/store,具体的存储路径可以在RocketMQ的配置文件中进行查看和修改。

                broker启动成功示例:

PS:如果你在 broker.conf中配置了 自动创建topic的话就不需要这样启动了,直接启动这俩就好了

broker.conf 配置参考

#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=127.0.0.1:9876
#Broker 对外服务的监听端口
listenPort=10911
#Broker监听的ip
brokerIP1=127.0.0.1

#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000

enablePropertyFilter=true

transactionTimeout=3000
transactionCheckMax=5
transactionCheckInterval=2000

如果以上方法都不行,建议换最新版 mq 然后重新配置试试

至此结束

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值