【RocketMQ】安装与部署(Windows)

这篇具有很好参考价值的文章主要介绍了【RocketMQ】安装与部署(Windows)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

准备工作

下载

可以在官网上下载RocketMQ · 官方网站 | RocketMQ (apache.org)或者直接到Apache的文件站点下Index of /dist/rocketmq (apache.org)找到对应版本下载。

这里以编写时的最新版本为例,选择Binary版本下载,该版本为编译后的版本,可以直接使用。

Source下载获取的是源码,需要经过编译后才可以使用,不过比较方便自行扩展,有扩展需求可以使用该版本自行编译。
rocketmq windows,RocketMQ,windows,java-rocketmq,rocketmq
下载完成后解压出来是如下的文件结构。
rocketmq windows,RocketMQ,windows,java-rocketmq,rocketmq
以下以windows为环境演示。

RocketMQ依赖的是Java的运行环境,因此系统上应该安装Java并且拥有对应的环境变量JAVA_HOME.

RocketMQ使用的java环境是java8,对于高版本环境可能需要进行一些适配性的改动。

在RocketMQ目录下的bin文件夹中有对应的服务启动脚本,包含Linux可运行的sh文件以及Windows可运行的cmd文件。

环境变量

解压完毕后需要手动添加名为ROCKETMQ_HOME的环境变量,索引到RocketMQ的解压目录即可,设置完毕后需要重启电脑。
rocketmq windows,RocketMQ,windows,java-rocketmq,rocketmq

NameServer

打开cmd命令行后,通过cd命令进入到解压目录的bin目录下。然后使用start mqnamesrv.cmd 命令新开一个命令行窗口启动NameServer
rocketmq windows,RocketMQ,windows,java-rocketmq,rocketmq
或者直接使用mqnamesrv.cmd在当前命令行中启动。

其本质是通过此前设置的环境变量找到RocketMQ的bin路径,再通过该路径下的runserver.cmd脚本文件实现运行的,因此启动项配置其实来自runserver.cmd中。

出现The Name Server boot success提示则表示NameServer服务启动成功,启动成功后不要关闭该命令窗口。

可能出现的问题

Please set the ROCKETMQ_HOME variable in your environment!

这个问题提示其实不够准确,并不一定是在我们没有设置环境变量时出现。
rocketmq windows,RocketMQ,windows,java-rocketmq,rocketmq
因为在运行过程中,脚本文件是通过环境变量来定位到runserver.cmd的位置再通过该脚本来启动应用的,因此在当runserver.cmd文件定位不到时才会出现该问题。

处理方法:可以重新打开一个命令行,然后通过echo %ROCKETMQ_HOME%打印一下环境变量出来检查一下环境变量是否有误。同时这种方式也能够让环境变量刷新,如果此前曾经修改过环境变量而没有重启电脑,则这种方式能够让环境变量刷新成修改后的值。

如果仍然没有解决,则可以进入到该对应路径下看看是否缺失了runserver.cmd文件,到这一步也都没有发现问题,那就只能重启一下试试,可能环境变量的更改并没有生效。

Unrecognized VM option

在通过runserver.cmd运行时,如果以高于java8的版本作为环境运行可能会出现如下错误:Unrecognized VM option ‘UseConcMarkSweepGC’
rocketmq windows,RocketMQ,windows,java-rocketmq,rocketmq
这是因为在运行脚本中,包含了一些对CMSGC的一些调优参数。
rocketmq windows,RocketMQ,windows,java-rocketmq,rocketmq
据查在java9中使用G1来作为GC的默认实现,从而废弃了CMS相关的一些参数。因此启动时需要进行一些相关参数的改动,或者将java降级,指定特定的jre8来作为虚拟机运行。

在sh版本的runserver脚本中对java的版本进行了专门的适配,可以识别java版本采用特定的指令。如果使用cmd脚本时仍需要在Java高版本环境中运行,也可以参照sh版本脚本修改一下对应的虚拟机参数。
rocketmq windows,RocketMQ,windows,java-rocketmq,rocketmq
处理方法:这里提供一个根据sh脚本修改过来的适配高版本java的cmd脚本,使用高版本运行时用该脚本替代原本的runserver.cmd即可。

@echo off
rem Licensed to the Apache Software Foundation (ASF) under one or more
rem contributor license agreements.  See the NOTICE file distributed with
rem this work for additional information regarding copyright ownership.
rem The ASF licenses this file to You under the Apache License, Version 2.0
rem (the "License"); you may not use this file except in compliance with
rem the License.  You may obtain a copy of the License at
rem
rem     http://www.apache.org/licenses/LICENSE-2.0
rem
rem Unless required by applicable law or agreed to in writing, software
rem distributed under the License is distributed on an "AS IS" BASIS,
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rem See the License for the specific language governing permissions and
rem limitations under the License.


if not exist "%JAVA_HOME%\bin\java.exe" echo Please set the JAVA_HOME variable in your environment, We need java(x64)! & EXIT /B 1
set "JAVA=%JAVA_HOME%\bin\java.exe"

setlocal

set BASE_DIR=%~dp0
set BASE_DIR=%BASE_DIR:~0,-1%
for %%d in (%BASE_DIR%) do set BASE_DIR=%%~dpd

set CLASSPATH=.;%BASE_DIR%conf;%BASE_DIR%lib\*;%CLASSPATH%

set "JAVA_OPT=%JAVA_OPT% -server -Xms4g -Xmx4g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
set "JAVA_OPT=%JAVA_OPT% -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0"
set "JAVA_OPT=%JAVA_OPT% -verbose:gc -Xloggc:"%USERPROFILE%\rmq_srv_gc.log" -XX:+PrintGCDetails"
set "JAVA_OPT=%JAVA_OPT% -XX:-OmitStackTraceInFastThrow"
set "JAVA_OPT=%JAVA_OPT% -XX:-UseLargePages"
set "JAVA_OPT=%JAVA_OPT% %JAVA_OPT_EXT% -cp "%CLASSPATH%""

echo %*

"%JAVA%" %JAVA_OPT% %*

为什么不对cmd脚本进行适配呢?

sh脚本中的java版本适配其本质上,是通过运行 java -version命令 获取到控制台输出的完整java版本信息。再通过字符串匹配的方式来获取java版本号,再去以8为基准去匹配对应的运行参数。

经过测试,windows平台下的java -version获取到的版本字符串通过命令行是无法捕获到的。
rocketmq windows,RocketMQ,windows,java-rocketmq,rocketmq
rocketmq windows,RocketMQ,windows,java-rocketmq,rocketmq
rocketmq windows,RocketMQ,windows,java-rocketmq,rocketmq
推测也就是这个原因windows导致没有办法单独通过命令行来确定java版本号,也自然就没有办法参照其进行适配了。

找不到或无法加载主类

rocketmq windows,RocketMQ,windows,java-rocketmq,rocketmq
该问题的主要诱因是环境变量中存在空格。导致解析命令时环境变量被分割成了两个命令。
rocketmq windows,RocketMQ,windows,java-rocketmq,rocketmq
处理方法:最好的解决办法是变更目录,在RocketMQ的路径中不要存在空格。

还有,其实当命令中存在不需要被分割的空格时,只需要使用 双引号"" 将对应的命令包裹起来即可。
rocketmq windows,RocketMQ,windows,java-rocketmq,rocketmq
但是此处经过尝试后发现,该处被错误分割的情况消失,但是仍然存在问题,可能在runserver中的BASE_DIR与CLASSPATH等变量也需要加上双引号防止错误分割,解决起来较为麻烦,而且不清楚后续会不会造成其他问题,因此不再对这种情况进行处理。
rocketmq windows,RocketMQ,windows,java-rocketmq,rocketmq

Broker

启动

在启动前需要先添加一个环境变量NAMESRV_ADDR,用来指向nameServer服务的地址。因为测试部署时服务部署在本机,所以使用localhost地址,加上此前默认的端口9876作为环境变量值。
rocketmq windows,RocketMQ,windows,java-rocketmq,rocketmq
打开cmd命令行后,通过cd命令进入到RocketMQ解压目录的bin目录下,运行命令start mqbroker.cmd autoCreateTopicEnable=true启动服务。
rocketmq windows,RocketMQ,windows,java-rocketmq,rocketmq
出现The broker[…] boot success提示则表示broker服务启动成功,启动成功后同样不要关闭该命令窗口。

可能出现的问题

因为运行逻辑类似,因此也会出现上述情况类似的问题,此处不过多阐述,对照着修改即可。

关于java版本适配的问题,此处也提供一个高版本可用的运行脚本:

@echo off
rem Licensed to the Apache Software Foundation (ASF) under one or more
rem contributor license agreements.  See the NOTICE file distributed with
rem this work for additional information regarding copyright ownership.
rem The ASF licenses this file to You under the Apache License, Version 2.0
rem (the "License"); you may not use this file except in compliance with
rem the License.  You may obtain a copy of the License at
rem
rem     http://www.apache.org/licenses/LICENSE-2.0
rem
rem Unless required by applicable law or agreed to in writing, software
rem distributed under the License is distributed on an "AS IS" BASIS,
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rem See the License for the specific language governing permissions and
rem limitations under the License.

if not exist "%JAVA_HOME%\bin\java.exe" echo Please set the JAVA_HOME variable in your environment, We need java(x64)! & EXIT /B 1
set "JAVA=%JAVA_HOME%\bin\java.exe"

setlocal

set BASE_DIR=%~dp0
set BASE_DIR=%BASE_DIR:~0,-1%
for %%d in (%BASE_DIR%) do set BASE_DIR=%%~dpd

set CLASSPATH=.;%BASE_DIR%conf;%BASE_DIR%lib\*;%CLASSPATH%

rem ===========================================================================================
rem  JVM Configuration
rem ===========================================================================================
set "JAVA_OPT=%JAVA_OPT% -server -Xms2g -Xmx2g"
set "JAVA_OPT=%JAVA_OPT% -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:SurvivorRatio=8"
set "JAVA_OPT=%JAVA_OPT% -verbose:gc -Xlog:gc*:file=%USERPROFILE%/mq_gc.log:time,tags:filecount=5,filesize=30M"
set "JAVA_OPT=%JAVA_OPT% -XX:-OmitStackTraceInFastThrow"
set "JAVA_OPT=%JAVA_OPT% -XX:+AlwaysPreTouch"
set "JAVA_OPT=%JAVA_OPT% -XX:MaxDirectMemorySize=15g"
set "JAVA_OPT=%JAVA_OPT% -XX:-UseLargePages -XX:-UseBiasedLocking"
set "JAVA_OPT=%JAVA_OPT% -Drocketmq.client.logUseSlf4j=true"
set "JAVA_OPT=%JAVA_OPT% %JAVA_OPT_EXT% -cp %CLASSPATH%"

"%JAVA%" %JAVA_OPT% %*

用其取代runbroker.cmd即可。

导包问题
java.lang.IllegalAccessError: class org.apache.rocketmq.common.UtilAll (in unnamed module @0x4bde3f8a) cannot access class sun.nio.ch.DirectBuffer (in module java.base) because module java.base does not export sun.nio.ch to unnamed module @0x4bde3f8a

在启动参数中额外添加一句--add-exports=java.base/sun.nio.ch=ALL-UNNAMED即可.。

"%JAVA%" %JAVA_OPT% %*

更改为

"%JAVA%" --add-exports=java.base/sun.nio.ch=ALL-UNNAMED  %JAVA_OPT% %*

控制台

上述服务搭建成功后服务就已经可用了,但是为了便于管理其中的数据,我们需要搭建一个控制台,用来提供一个前端页面供我们管理数据。

获取源码

在早些时候,控制台项目隶属于GitHub - apache/rocketmq-externals项目下,位于其中的rocketmq-console中,其中还包含一些其他的RocketMQ的拓展项目,可以参考使用。后来控制台项目单独独立了出来,我们可以在GitHub - apache/rocketmq-dashboard仓库中找到。

首先将其源码通过以下git指令克隆到本地。

git clone https://github.com/apache/rocketmq-dashboard.git

安装依赖

克隆完毕后因为还需要处理依赖,有条件的话可以直接使用JAVA编译器打开,使用IDEA导入为maven项目的话会自动加载依赖,其本质上就是java spring 的项目。如果依赖下载较慢可以使用阿里的maven仓库作为中央仓库,因为本来就是阿里的项目,应该不会存在依赖版本等的问题。

<mirrors>
    <mirror>
          <id>alimaven</id>
          <name>aliyun maven</name>
          <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
          <mirrorOf>central</mirrorOf>        
    </mirror>
</mirrors>

不借助编译器处理依赖的话可以cd到项目目录下,自行使用mvn的指令去处理依赖。

启动

在依赖安装完成之后,在运行之前先要修改一下配置。其实配置项的功能描述在application.yml中都有,没有的大多是spring的基本配置,查spring对应的配置项即可。此处只包括影响到应用启动的配置。

配置NameServer地址

在application.yml中,需要配置一下此前的NameServer的ip地址,因为源码中的配置文件中 NameServer地址配置多了一个127.0.0.2:9876地址,运行过程中连接不上可能会报错,删掉即可。
rocketmq windows,RocketMQ,windows,java-rocketmq,rocketmq
此处可以配置一个,也可以配置多个,使用yml的数组写法即可,即在每一项数组元素均使用 “-”开头。

如果在properties文件中数组则是类似于通常数组的写法,只不过每个元素都要单独写一项,比较麻烦。

rocketmq.config.namesrvAddrs[0]=127.0.0.1:9876
rocketmq.config.namesrvAddrs[1]=127.0.0.2:9876

配置启动端口

也可以配置一下当前控制台的启动使用的访问端口,随意一个空闲端口即可。
rocketmq windows,RocketMQ,windows,java-rocketmq,rocketmq

启动

使用编译器启动,通过mvn spring-boot:run启动或者通过maven打包成jar包然后运行jar包均可,运行成功后如下图。

部署

部署时可以参照传统的maven项目进行打包部署,另外官方也提供了docker镜像来便捷部署,根据ReadMe中描述,通过以下docker指令拉取docker镜像。

docker pull apacherocketmq/rocketmq-dashboard:latest

然后通过以下指令修改参数后运行即可

docker run -d --name rocketmq-dashboard -e "JAVA_OPTS=-Drocketmq.namesrv.addr=127.0.0.1:9876" -p 8080:8080 -t apacherocketmq/rocketmq-dashboard:latest

其中rockermq.namesrv.addr的值为此前部署的NameServer的地址,-p参数冒号前的值为应用在虚拟机中的启动端口,后面的值应该映射到宿主机开放给该服务的端口。

访问

启动后通过部署的ip+port端口的形式访问即可。
rocketmq windows,RocketMQ,windows,java-rocketmq,rocketmq
需要中文界面的话可以通过ChangeLanguage来切换语言。

rocketmq windows,RocketMQ,windows,java-rocketmq,rocketmq
rocketmq windows,RocketMQ,windows,java-rocketmq,rocketmq
多语化文件放置在源码目录下的src/main/resources/static/src/i18n文件夹中,可参照前端的i18n标准自行修改翻译或者添加其他语言。
rocketmq windows,RocketMQ,windows,java-rocketmq,rocketmq文章来源地址https://www.toymoban.com/news/detail-721771.html

到了这里,关于【RocketMQ】安装与部署(Windows)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Windows下RocketMQ的启动

    下载地址:下载 | RocketMQ 解压后 修改 bin目录下的runbroker.cmd set \\\"JAVA_OPT=%JAVA_OPT% -server -Xms2g -Xmx2g\\\" set \\\"JAVA_OPT=%JAVA_OPT% -XX:MaxDirectMemorySize=15g\\\" set \\\"JAVA_OPT=%JAVA_OPT% -cp %CLASSPATH%\\\" 分别改为  set \\\"JAVA_OPT=%JAVA_OPT% -server -Xms512m -Xmx512m -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m\\\"  set \\\"JAVA

    2024年02月14日
    浏览(27)
  • Apache RocketMQ之集成RocketMQ_MQTT 安装部署协议

    Apache RocketMQ 安装说明 安装步骤 参考快速开始 https://rocketmq.apache.org/zh/docs/quickStart/01quickstart 安装可视化rocketmq_dashboard下载地址 https://rocketmq.apache.org/zh/docs/4.x/deployment/03Dashboard/ 安装rocketmq_mqtt https://rocketmq.apache.org/zh/docs/4.x/mqtt/01RocketMQMQTTOverview broker.conf配置文件中添加参数,开

    2024年02月13日
    浏览(24)
  • RocketMq(一)安装部署

    一、linux单机部署: 1、到apache官网下载 | RocketMQ (apache.org)下载binary zip包,如我下载的4.9.6版本。   上传到建好的/usr/local/rocketmq目录下。    2、解压zip包 3、进入解压后的文件夹,启动 Name Server: 启动后会有日志输出到nohup.out文件上(自动生成),可以到上面去看看是否启动

    2024年02月07日
    浏览(29)
  • Rocketmq 安装部署

    一、用途         测试、预发环境有且只有一个rocketmq,用做业务消息队列,正式环境与阿里云的rocketmq互补,用做非特殊业务统一使用的消息队列 二、Dockerfile         为解决低版本的漏洞问题,通过dockerhub找到了github上的dockerfile源码,自己制作了一个高版本4.9.4版本

    2024年02月13日
    浏览(30)
  • 中间件:RocketMQ安装部署

    下载 配置 broker.conf 的brokerIP1 为公网ip 启动命令: 查看集群状态 benchmark目录下

    2024年02月12日
    浏览(28)
  • 常用环境部署(七)——Docker安装RocketMQ

    (1)拉取镜像 (2)创建一个数据目录 即创建一个namesrv数据存储路径 (3)构建namesrv容器  (4)参数说明 参数 说明 -d 以守护进程的方式启动 - -restart=always docker重启时候容器自动重启 - -name rmqnamesrv 把容器的名字设置为rmqnamesrv -p 9876:9876 把容器内的端口9876挂载到宿主机98

    2023年04月14日
    浏览(35)
  • 【Windows10下启动RocketMQ报错:找不到或无法加载主类 Files\Java\jdk1.8.0_301\lib\dt.jar】解决方法

    参考RocketMQ Github官网上的说明,下载rocketmq-all-5.1.3-bin-release.zip,解压配置环境变量后,执行如下命令: 报错: 错误: 找不到或无法加载主类 FilesJavajdk1.8.0_301libdt.jar;C:Program Windows上安装jdk默认安装到了C:Program Files路径下,即JAVA_HOME为C:Program FilesJavajdk1.8.0_301,其中路径

    2024年02月13日
    浏览(39)
  • 【RocketMQ】005-Docker 部署 RocketMQ

    MQ 镜像 可视化平台镜像 创建 nameserver 挂载目录 创建 broker 目录 创建 broker 配置文件目录 目录:/home/zibo/docker/rocketmq/data/conf vim broker.conf 启动 nameserver docker run : 这是Docker命令,用于创建和管理Docker容器。 -d : 这是一个选项,指示Docker在后台运行容器。 --restart=always : 这是一个

    2024年02月16日
    浏览(31)
  • 【RocketMQ】RocketMQ 5.1.0版本Proxy集群模式部署实践

    为了支持长远的云原生发展,RocketMQ引入了一个全新的模块:Proxy,官方对RocketMQ客户端提供了独立的开源项目:https://github.com/apache/rocketmq-clients,如果要使用这个新的客户端,必须要使用Proxy作为endpoint。 Proxy有两种搭建方式: LOCAL:本地模式,顾名思义,通过追加参数,在

    2024年02月01日
    浏览(34)
  • RocketMQ Docker部署

    1. 镜像制作前准备 1.1 clone rocketmq-docker项目的代码 执行上面命令克隆下来这项目的代码。 2. 构建镜像 这里需要构建的镜像有两个 rocketmq-dashboard镜像(web控制台) rocketmq镜像(NameSrv和Broker) 2.1 rocketmq镜像构建 原理:通过版本和BASE-IMAGE(支持centos, alpine)来判断是使用 Dockerfile-centos文

    2024年02月11日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包