windows下安装RocketMQ以及遇到的问题处理

一、下载文件

这里我们采用4.7.1版本的rocketmq,进入4.7.1版本界面,选择二进制版下载.以下为二进制版下载地址,直接点击下载即可:4.7.1二进制版下载

二、环境准备

2.1 环境版本

项目属性
系统windows server 2012
JDK版本JDK1.8
rocketmq4.7.1

2.2 设置环境变量

ROCKETMQ需要使用JAVA环境,因此需要先配置好JAVA的环境变量,步骤省略。

  • 2.2.1 设置ROCKETMQ_HOME

    变量名:ROCKETMQ_HOME
    变量值:D:\rocketmq(你的MQ解压后的路径,到bin目录的上级即可)
    在这里插入图片描述

  • 2.2.2 设置NAMESRV_ADDR

    变量名:NAMESRV_ADDR
    变量值:localhost:9876(IP和端口具体情况设定,我这里采用单机部署因此可以用localhost。)在这里插入图片描述

三、启动

3.1 启动name-server

  • 以管理员身份运行powershell,键入以下命令:

     $host.ui.RawUI.WindowTitle="rocketmq-name-server" # 修改窗口标题,防止过多的窗口不好定位目标
     cd  'D:\rocketmq'								   # 进入rocketmq解压后的文件夹,视具体情况进行修改
      .\bin\mqnamesrv.cmd							   # 启动name-server
    
  • name-server启动完成后的界面:
    name-server启动完成后的界面

3.2 启动broker

  • 重新以管理员身份运行一个powershell,键入以下命令:
    $host.ui.RawUI.WindowTitle="rocketmq-broker" 	   # 修改窗口标题,防止过多的窗口不好定位目标
    cd  'D:\rocketmq'								   # 进入rocketmq解压后的文件夹,视具体情况进行修改
    .\bin\mqbroker.cmd autoCreateTopicEnable=true	   # 启动broker
    
  • broker启动完成后的界面:
    broker启动完成后的界面

四、测试消息

  • 消费消息测试
    重新打开一个powershell,执行命令:

     .\bin\tools.cmd  org.apache.rocketmq.example.quickstart.Consumer
    

    在这里插入图片描述
    消费者测试完成,等待消息发送。。。。。。

  • 发送消息测试

    最好是将消费消息的powershell和发送消息的powershell并排放置,这样能看到当消息一经发送,消费者powershell就开始滚动接受消息。

    重新打开一个powershell,执行命令:

     .\bin\tools.cmd  org.apache.rocketmq.example.quickstart.Producer
    

    在这里插入图片描述
    消息发送测试成功,消息成功被消费者接收消费。

五、碰到的问题与解决

  • 5.1 找不到或无法加载主类 Files\rocketmq\Files\rocketmq\lib
    路径有空格导致的异常
    由于rocketmq启动时会将自身目录下的lib目录加入到依赖路径里面去,因此当此路径存在空格的时候会出现这个异常。注意这里我用的路径是D:\Program Files\rocketmq,环境变量里面的ROCKETMQ_HOME对用的也是配置这个D:\Program Files\rocketmq,Program Files中间是有空格的。
    因此需要把RocketMQ移出Program Files或者将Program Files重命名取消空格(这个不推荐,因为正常来说Program Files目录下肯定安装了很多软件,一改全完蛋。)。
    所以当把RocketMQ移到了D盘根目录下,环境变量也对应修改为根目录下,是不会有这个问题的。

  • 5.2 找不到或无法加载主类Files\Java\jdk1.8.0_144\lib;D:\Program
    双引号导致的异常
    上面说到rocketmq会将lib目录加到依赖路径里面去,那么同样肯定会将JAVA的classPath加进运行路径里面去。这个问题就是在拼接classPath时有些版本的windows不能完整的解析拼接命令导致的异常。这里我们是在运行broker时候出现的异常,因此去看下bin目录下的runbroker.cmd(运行的是mqbroker.cmd,实际打开的是runbroker.cmd)文件里面的内容:
    在这里插入图片描述
    看到第26行,我们需要将:

    set CLASSPATH=.;%BASE_DIR%conf;%CLASSPATH%

    改为(对%CLASSPATH%添加英文的双引号):

    set CLASSPATH=.;%BASE_DIR%conf;"%CLASSPATH%"

    改完后的文件:
    在这里插入图片描述
    然后重新运行命令即可成功启动:

     .\bin\mqbroker.cmd autoCreateTopicEnable=true
    
  • 5.3 连接不上nameServer或者broker,报RemotingConnectException: connect to <…:10911> failed或者connect to <…:9876> failed

    • 5.3.1.检查 防火墙
      防火墙需要开放9876,10909,10911,10912四个端口,如果在windows下远程端口需要改为所有端口。
      在这里插入图片描述

    在这里插入图片描述

    • 5.3.2.检查broker.conf
      如果防火墙开放或者防火墙关闭还是连接不上,考虑是因为多网卡引起的IP配置问题,需要把brokerIP1和brokerIP2改为正常可访问的IP。
      autoCreateTopicEnable=true
      listenPort=10911
      brokerIP1=对外IP
      brokerIP2=对外IP
      
  • 5.4 unable to calculate a request signature

    Caused by: org.apache.rocketmq.client.exception.MQBrokerException: CODE: 1  DESC: 		org.apache.rocketmq.acl.common.AclException: [10015:signature-failed] unable to calculate a request signature. error=[10015:signature-failed] unable to calculate a request signature. error=Algorithm HmacSHA1 not available, org.apache.rocketmq.acl.common.AclSigner.signAndBase64Encode(AclSigner.java:84)
    
    • 5.4.1 修改tools的lib地址
      在tools.cmd(Linux下是tools.sh)中${JAVA_HOME}/jre/lib/ext后加上jre>lib>ext文件夹的绝对路径(jdk路径同级的那个jre目录)。
      例如我的目录地址为:E:\Java\jdk1.8_64\jre\lib\ext

      set "JAVA_OPT=%JAVA_OPT% -Djava.ext.dirs="%BASE_DIR%\lib";"%JAVA_HOME%\jre\lib\ext";"%JAVA_HOME%\lib\ext";"E:\Java\jdk1.8_64\jre\lib\ext""
      
    • 5.4.2 复制jar包
      如果修改tools里面的lib地址还是无效,则直接从jre>lib>ext目录中复制sunjce_provider.jar到rocketmq安装路面下的lib目录里面即可。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值