• RocketMQ-RocketMQ部署(Linux、docker)



    本篇博客主要阐述了如何单机部署RocketMQ,以及可视化管理工具rocketmq-console。涉及两种方式,分别是Linux部署和Docker部署~(小伟使用腾讯云CentOS6.7、本机M1P芯片Mac演示)

    一、Linux

    1、单机部署RocketMQ

    > 前置条件

    开启端口: 10911 10912 10909 9876
    在这里插入图片描述

    第一步、官网下载 并 上传至服务器

    RocketMQ4.9.0下载链接

    mac推荐一款工具,用于FTP文件上传~
    Alt
    以上步骤自行脑补一下,略~

    [root@hgwtencent RocketMQ]# pwd
    /soft/RocketMQ
    [root@hgwtencent RocketMQ]# ll
    总用量 17764
    -rw-r--r-- 1 root root 18186461 1129 16:15 rocketmq-all-4.9.0-bin-release.zip
    [root@hgwtencent RocketMQ]# unzip rocketmq-all-4.9.0-bin-release.zip
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    RocketMQ目录结构 :

    [root@hgwtencent RocketMQ]# cd rocketmq-all-4.9.0-bin-release/
    [root@hgwtencent rocketmq-all-4.9.0-bin-release]# ll
    总用量 48
    drwxr-xr-x 2 root root  4096 611 2021 benchmark	# 启动脚本,包括shell脚本和cmd脚本
    drwxr-xr-x 3 root root  4096 611 2021 bin				# 实例配置文件,包括broker配置文件、logback配置文件等
    drwxr-xr-x 6 root root  4096 611 2021 conf				# 依赖jar包,包括netty、commons-lang、FastJSON等
    drwxr-xr-x 2 root root  4096 611 2021 lib
    -rw-r--r-- 1 root root 17327 69 2021 LICENSE
    -rw-r--r-- 1 root root  1338 69 2021 NOTICE
    -rw-r--r-- 1 root root  5132 69 2021 README.md
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    第二步、配置jdk环境

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ya1ztIKO-1669962286957)(RocketMQ-RocketMQ部署(Linux、docker)].assets/image-20221129201046483.png)

    [root@hgwtencent rocketmq-all-4.9.0-bin-release]# cd bin
    [root@hgwtencent bin]# echo  $JAVA_HOME
    /usr/java/jdk1.8.0_311-amd64
    [root@hgwtencent bin]# vim tools.sh
    
    • 1
    • 2
    • 3
    • 4

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6ajzKeq1-1669962286958)(RocketMQ-RocketMQ部署(Linux、docker)].assets/image-20221129201436553.png)

    在红框后面追加上本机jdk环境/jre/lib/ext

    如:

    JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${BASE_DIR}/lib:${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/exti:/usr/java/jdk1.8.0_311-amd64/jre/lib/ext"
    
    • 1

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zmXNDQfk-1669962286958)(RocketMQ-RocketMQ部署(Linux、docker)].assets/image-20221129201758968.png)

    第三步、修改初始内存

    Rocketmq默认的虚拟机内存较大,启动broker如果因为内存不足失败,需要编辑如下两个配置文件,去修改JVM内存大小 (根据自身服务器配置决定是否修改)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ecyzP6VH-1669962343667)(RocketMQ-RocketMQ部署(Linux、docker)].assets/image-20221129170150070.png)
    1、修改 runserver.sh 内存大小

    [root@hgwtencent bin]# vim runserver.sh
    #参考设置
    JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn512m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m"
    
    • 1
    • 2
    • 3

    原先
    在这里插入图片描述
    修改为下图的配置:
    在这里插入图片描述
    2、修改 runbroker.sh 内存大小

    [root@hgwtencent bin]# vim runbroker.sh
    #参考设置
    JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m"
    
    • 1
    • 2
    • 3

    原先
    在这里插入图片描述
    修改为下图的配置:
    在这里插入图片描述

    第四步、启动 NameServer

    启动NameServer

    # 以后台进程运行,日志输出到namesrv.log 将错误信息重定向到标准输出
    [root@hgwtencent rocketmq-all-4.9.0-bin-release]# touch namesrv.log
    [root@hgwtencent rocketmq-all-4.9.0-bin-release]# nohup sh bin/mqnamesrv > namesrv.log 2>&1 &
    
    • 1
    • 2
    • 3

    以后台运行后的方式去执行启动脚本,查看日志 :

    [root@hgwtencent rocketmq-all-4.9.0-bin-release]# tail -f ~/logs/rocketmqlogs/namesrv.log	
    
    • 1

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1qjbz9sw-1669962424917)(RocketMQ-RocketMQ部署(Linux、docker)].assets/image-20221129175812064.png)

    第五步、启动 Broker

    启动Broker一共有两种方式,分别是 本地部署(linux)外网部署,这里主要演示外网部署,命令贴在下面

    本地部署

    [root@hgwtencent rocketmq-all-4.9.0-bin-release]# nohup sh bin/mqbroker -n localhost:9876 &
    
    • 1

    外网部署

    1、首先需求修改一下配置文件:

    [root@hgwtencent conf]# pwd
    /soft/RocketMQ/rocketmq-all-4.9.0-bin-release/conf
    [root@hgwtencent conf]# vim broker.conf
    [root@hgwtencent conf]# cat broker.conf
    # Licensed to the Apache Software Foundation (ASF) under one or more
    # contributor license agreements.  See the NOTICE file distributed with
    # this work for additional information regarding copyright ownership.
    # The ASF licenses this file to You under the Apache License, Version 2.0
    # (the "License"); you may not use this file except in compliance with
    # the License.  You may obtain a copy of the License at
    #
    #     http://www.apache.org/licenses/LICENSE-2.0
    #
    #  Unless required by applicable law or agreed to in writing, software
    #  distributed under the License is distributed on an "AS IS" BASIS,
    #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    #  See the License for the specific language governing permissions and
    #  limitations under the License.
    
    brokerClusterName = DefaultCluster
    brokerName = broker-a
    brokerId = 0
    deleteWhen = 04
    fileReservedTime = 48
    brokerRole = ASYNC_MASTER
    flushDiskType = ASYNC_FLUSH
    namesrvAddr=124.222.223.222:9876
    brokerIP1=124.222.223.222
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3AnZPeHs-1669962471999)(RocketMQ-RocketMQ部署(Linux、docker)].assets/image-20221201164429836.png)

     23 namesrvAddr=服务器外网ip:9876
     24 brokerIP1=服务器外网ip
    
    • 1
    • 2

    2、启动Broker

    [root@hgwtencent rocketmq-all-4.9.0-bin-release]# touch broker.log
    [root@hgwtencent rocketmq-all-4.9.0-bin-release]# nohup bin/mqbroker -c conf/broker.conf > broker.log 2>&1 &
    [2] 4718
    
    • 1
    • 2
    • 3

    以后台运行后的方式去执行启动脚本,查看日志 :

    [root@hgwtencent rocketmq-all-4.9.0-bin-release]# tail -f ~/logs/rocketmqlogs/broker.log
    
    • 1

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QuHgLFC9-1669962471999)(RocketMQ-RocketMQ部署(Linux、docker)].assets/image-20221201170438719.png)

    第六步、关闭RocketMQ
    # 1.关闭 Broker
    [root@hgwtencent rocketmq-all-4.9.0-bin-release]# sh bin/mqshutdown broker
    The mqbroker(14968) is running...
    Send shutdown request to mqbroker(14968) OK
    
    # 2.关闭 NameServer
    [root@hgwtencent rocketmq-all-4.9.0-bin-release]# sh bin/mqshutdown namesrv
    The mqnamesrv(14826) is running...
    Send shutdown request to mqnamesrv(14826) OK
    [2]+  退出 143              nohup sh bin/mqbroker -n localhost:9876
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-deMsdnrw-1669962510060)(RocketMQ-RocketMQ部署(Linux、docker)].assets/image-20221129185950708.png)

    Demo:发送与接收消息测试 (Linux端)

    ​ 在发送或接收消息之前,开发者需要通知客户端name servers 的位置。RocketMQ提供多种 实现方式。为了简单起见下方展示环境变量NAMESRV_ADDR的用法 :

    # 设置环境变量:
    export NAMESRV_ADDR=localhost:9876
    
    • 1
    • 2

    使用安装包的Demo发送消息:

    > sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
     SendResult [sendStatus=SEND_OK, msgId= ...
    
    • 1
    • 2

    接受消息 (bin目录下) :

     > sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
     ConsumeMessageThread_%d Receive New Messages: [MessageExt...
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述



    2、部署可视化管理工具—rocketmq-console 管理控制台

    RocketMQ有一个可视化的dashboard,通过该控制台可以直观的查看到很多数据。

    ​ RocketMQ有一个对其扩展的开源项目: incubator-rocketmq-externals,这个项目中有一个子模块叫 rocketmq-console。这个便是管理控制台项目。

    ​ 步骤是先将 incubator-rocketmq-externalsgit 拉到本地,然后对 rocketmq-console进行操作(编译打包运行)

    git地址 : https://github.com/SummerUnfair/rocketmq-externals/tags

    第一步、官网下载 并 解压

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0ejT8zKU-1669962721088)(RocketMQ-RocketMQ部署(Linux、docker)].assets/image-20221201173955887.png)

    gwh@GWdeMacBook-Pro [13:43:43] [~/Documents/Software/tools/rocketmq]
    -> % pwd
    /Users/gwh/Documents/Software/tools/rocketmq
    
    gwh@GWdeMacBook-Pro [13:43:44] [~/Documents/Software/tools/rocketmq]
    -> % unzip rocketmq-externals-rocketmq-console-1.0.0.zip
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    第二步、修改配置

    修改其src/main/resources中的application.properties配置文件 :

    • 原来的端口号为8080,修改为一个不常用的
    • 指定RocketMQ的name server地址
    gwh@GWdeMacBook-Pro [13:45:20] [~/Documents/Software/tools/rocketmq/rocketmq-externals-rocketmq-console-1.0.0/rocketmq-console/src/main/resources]
    -> % pwd
    /Users/gwh/Documents/Software/tools/rocketmq/rocketmq-externals-rocketmq-console-1.0.0/rocketmq-console/src/main/resources
    
    gwh@GWdeMacBook-Pro [13:45:21] [~/Documents/Software/tools/rocketmq/rocketmq-externals-rocketmq-console-1.0.0/rocketmq-console/src/main/resources]
    -> % ll
    total 16
    -rw-r--r--@ 1 gwh  staff   741B  6 15  2017 application.properties
    -rw-r--r--@ 1 gwh  staff   1.1K  6 15  2017 logback.xml
    drwxr-xr-x@ 7 gwh  staff   224B  6 15  2017 static
    
    gwh@GWdeMacBook-Pro [13:45:32] [~/Documents/Software/tools/rocketmq/rocketmq-externals-rocketmq-console-1.0.0/rocketmq-console/src/main/resources]
    -> % vim application.properties
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AXyRLKgH-1669962749829)(RocketMQ-RocketMQ部署(Linux、docker)].assets/image-20221202140528365.png)
    大家自行修改为自己的部署的RocketMQ的ip:端口。

    第三步、添加依赖

    在解压目录rocketmq-console的pom.xml中添加如下JAXB依赖。

    JAXB,Java Architechture for Xml Binding,用于XML绑定的Java技术,是一个业界标准,是一 项可以根据XML Schema生成Java类的技术

    依赖如下:

    
    <dependency>
        <groupId>javax.xml.bindgroupId>
        <artifactId>jaxb-apiartifactId>
        <version>2.3.0version>
    dependency>
    <dependency>
        <groupId>com.sun.xml.bindgroupId>
        <artifactId>jaxb-implartifactId>
        <version>2.3.0version>
    dependency>
    <dependency>
        <groupId>com.sun.xml.bindgroupId>
        <artifactId>jaxb-coreartifactId>
        <version>2.3.0version>
    dependency>
    <dependency>
        <groupId>javax.activationgroupId>
        <artifactId>activationartifactId>
        <version>1.1.1version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    在这里插入图片描述

    第四步、打包

    rocketmq-console目录下运行maven的打包命令。

    /rocketmq-externals-rocketmq-console-1.0.0/rocketmq-consol 项目目录下,执行以下打包命令

    mvn clean package -Dmaven.test.skip=true
    
    • 1

    在这里插入图片描述
    出现 BUILD SUCCESS 即打包成功~


    第五步、启动

    /rocketmq-externals-rocketmq-console-1.0.0/rocketmq-console/target 执行以下启动命令~

    在这里插入图片描述
    在这里插入图片描述

    第六步、线上部署

    在云服务器上开辟端口,并将本地jar包上传并运行(大家也可以将其打成Docker镜像运行)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K5tjhKjX-1669962965401)(RocketMQ-RocketMQ部署(Linux、docker)].assets/image-20221202141247093.png)

    [root@hgwtencent rocketmq-console]# touch rocketmq-console.log
    [root@hgwtencent rocketmq-console]# ll
    总用量 30300
    -rw-r--r-- 1 root root        0 122 14:14 rocketmq-console.log
    -rw-r--r-- 1 root root 31025914 122 14:14 rocketmq-console-ng-1.0.0.jar
    
    • 1
    • 2
    • 3
    • 4
    • 5

    run起来!

    [root@hgwtencent rocketmq-console]# nohup java -jar rocketmq-console-ng-1.0.0.jar &> rocketmq-console.log &
    
    • 1

    查看一下:

    [root@hgwtencent rocketmq-console]# ps -ef|grep "java -jar"
    root     22657 21241 84 14:15 pts/0    00:00:21 java -jar rocketmq-console-ng-1.0.0.jar
    root     22809 21241  0 14:16 pts/0    00:00:00 grep --color=auto java -jar
    
    • 1
    • 2
    • 3

    访问http://你的服务器ip:7777/#/topic
    在这里插入图片描述



    二、Docker

    第一步、启动 NameServer

    docker run -d -p 9876:9876 --name rmqserver  foxiswho/rocketmq:server-4.5.1
    
    • 1

    第二步、启动broker

    docker run -d -p 10911:10911 -p 10909:10909\
     --name rmqbroker --link rmqserver:namesrv\
     -e "NAMESRV_ADDR=namesrv:9876" -e "JAVA_OPTS=-Duser.home=/opt"\
     -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m"\
     foxiswho/rocketmq:broker-4.5.1
    
    • 1
    • 2
    • 3
    • 4
    • 5

    Broker容器中默认的配置文件的路径为:

    /etc/rocketmq/broker.conf
    
    • 1

    也可以通过-v参数指定本机的配置文件:

    docker run -d -p 10911:10911 -p 10909:10909\
     --name rmqbroker --link rmqserver:namesrv\
     -e "NAMESRV_ADDR=namesrv:9876" -e "JAVA_OPTS=-Duser.home=/opt"\
     -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m"\
     -v /conf/broker.conf:/etc/rocketmq/broker.conf \
     foxiswho/rocketmq:broker-4.5.1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    第三步、启动 rocketmq console

    如果一切正常,NameServer和Broker一会儿就会安装好,为了管理上的方便,rocketmq console也是必不可少的工具了,通过上面查询的方式找到需要启动的版本,启动方式如下:

    docker run -d --name rmqconsole -p 8180:8080 --link rmqserver:namesrv\
     -e "JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876\
     -Dcom.rocketmq.sendMessageWithVIPChannel=false"\
     -t styletang/rocketmq-console-ng
    
    • 1
    • 2
    • 3
    • 4

    然后通过如下命令检查一下启动情况:

    docker ps|grep rocketmq
    
    • 1

    结果如下:
    在这里插入图片描述
    再通过浏览器访问http://你的服务器ip:8180/#/,console的页面显示如下:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6CTStcsd-1669963036064)(RocketMQ-RocketMQ部署(Linux、docker)].assets/image-20220210223505659.png)

  • 相关阅读:
    javascript数组排序
    PySpark数据分析基础:PySpark基础功能及DataFrame操作基础语法详解
    2023年清洁电器行业数据分析:洗地机市场规模持续倍增,进入赛点
    git的基本操作
    Java Maven Tomcat使用Tesseract-OCR文字识别(Tess4j)
    mysql的基本查询操作
    CorelDRAW2024有哪些新功能?如何下载
    为什么重写equals方法,还必须要重写hashcode方法
    数据库(1):数据库初识与基本操作
    体验 Shifu 解决报错流程
  • 原文地址:https://blog.csdn.net/m0_49183244/article/details/128147349