image-20230517093920351

RocketMQ 官网: http://rocketmq.apache.org/

RocketMQ 文档:https://rocketmq.apache.org/docs/4.x/

RocketMQ GitHub:https://github.com/apache/rocketmq

RocketMQ 安装

下载

  1. 打开下载地址:https://rocketmq.apache.org/zh/download,选择 4.9.2 版本的 Binary 下载,点击【download.zip】。

    image-20230514201900833

  2. 等待下载完成。

    image-20230514202040618

安装

以安装Linux服务器为例

上传服务器

  1. 创建目录【/root/RocketMQ】用于存放 MQ 文件:

    1
    mkdir /root/RocketMQ
  2. 将下载的文件上传到服务器中:

    image-20230527204606514

  3. 安装 unzip 命令用于解压压缩包:

    1
    yum -y install unzip
  4. 解压压缩包 rocketmq-all-4.9.2-bin-release.zip:

    1
    unzip rocketmq-all-4.9.2-bin-release.zip

    image-20230514205022447

    • Benchmark:包含一些性能测试的脚本;
    • Bin:可执行文件目录;
    • Conf:配置文件目录;
    • Lib:第三方依赖;
    • LICENSE:授权信息;
    • NOTICE:版本公告。

配置环境变量

  1. 打开配置文件

    1
    vim /etc/profile
  2. 添加环境变量

    1
    export NAMESRV_ADDR=公网IP:9876
  3. 刷新配置文件

    1
    source /etc/profile

修改 runserver.sh

  1. 切换到【/root/RocketMQ/rocketmq-4.9.2/bin】目录下:

    1
    cd /root/RocketMQ/rocketmq-4.9.2/bin
  2. 编辑文件【runserver.sh】:

    1
    vim runserver.sh
  3. 修改运行时占用内存大小,由于 Java 环境为 jdk8,所以修改关于 Java9 之前的版本的配置:

    image-20230514221627433

    修改后:

    image-20230514221334627

修改 runbroker.sh

  1. 编辑【runbroker.sh】:

    1
    vim runbroker.sh
  2. 修改配置:

    image-20230514222720017

    修改后:

    image-20230514222542825

修改 broker.conf

  1. 切换【/root/RocketMQ/rocketmq-4.9.2/conf】目录:

    1
    cd /root/RocketMQ/rocketmq-4.9.2/conf
  2. 编辑【broker.conf】:

    1
    vim broker.conf
  3. 添加配置文件

    1
    2
    3
    namesrvAddr = localhost:9876
    autoCreateTopicEnable = true
    brokerIP1 = 192.168.10.4
    • namesrvAddr:nameServer 地址,当 nameServer 和 broker 在一个服务器时可以写 localhost。
    • autoCreateTopicEnable:自动创建 Topic。
    • brokerIP1:公网 ip 地址。

启动

  1. 创建目录【/root/RocketMQ/rocketmq-4.9.2/logs】用于存放日志:

    1
    mkdir /root/RocketMQ/rocketmq-4.9.2/logs

    image-20230514224421396

  2. 切换到【/root/RocketMQ/rocketmq-4.9.2】目录,启动 nameSrv:

    1
    nohup sh bin/mqnamesrv > ./logs/namesrv.log &

    image-20230514224715065

  3. 启动 broker,-c 指定配置文件:

    1
    nohup sh bin/mqbroker -c conf/broker.conf > ./logs/broker.log &

    image-20230514225050643

  4. 查看 Java 程序进程:

    1
    jps -l

    image-20230514225135516

  5. 关闭进程:

    1
    kill [pid]

安装 RocketMQ 控制台

安装

  1. 点击进入下载地址:https://rocketmq.apache.org/zh/download,右侧点击【RocketMQ Dashboard】,点击【download.zip】进行下载。

    image-20230514204030028

  2. 等待下载完成

    image-20230514204047194

  3. 解压并切换到根目录,打开cmd,使用maven命令进行打包

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

    image-20230514231044836

  4. 在target 目录下会生成我们需要的jar包

    image-20230514230333890

  5. 上传服务器

    image-20230514230251936

  6. 命令运行rocketmq-dashboard-1.0.0.jar包:

    1
    nohup java -jar rocketmq-dashboard-1.0.0.jar --server.port=8081 rocketmq.config.namesrvAddr=127.0.0.1:9876 > rocketmq-4.9.2/logs/dashboard.log &
  7. 浏览器访问:http://192.168.10.4:8081

    image-20230514233505821

  8. 若访问不了,可以查看防火墙是否开启,【9876、10100-11000】端口是否未开放。

Linux 防火墙命令

  • 查看防火墙状态:

    1
    systemctl status firewalld

    image-20230514233755808

  • 关闭防火墙:

    1
    systemctl stop firewalld
  • 开启防火墙:

    1
    systemctl start firewalld
  • 开放指定端口:

    1
    firewall-cmd --zone=public --add-port=8081/tcp --permanent
  • 重启防火墙:

    1
    firewall-cmd --reload

Docker 安装 RocketMQ

拉取镜像

  1. 拉取 RocketMQ 镜像:

    1
    2
    docker pull rocketmqinc/rocketmq
    docker pull styletang/rocketmq-console-ng
  2. 查看镜像:

    1
    docker images

    image-20230515162517332

启动 NameServer 服务

  1. 创建 NameServer 数据存储路径:

    1
    mkdir -p /home/rocketmq/data/namesrv/logs /home/rocketmq/data/namesrv/store
  2. 启动 NameServer 容器:

    1
    docker run -d --restart=always --name rmqnamesrv -p 9876:9876 -v /home/rocketmq/data/namesrv/logs:/root/logs -v /home/rocketmq/data/namesrv/store:/root/store -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq sh mqnamesrv
    参数描述
    -d以守护进程的方式启动
    –restart=alwaysdocker 重启时候容器自动重启
    –name rmqnamesrv容器名字设置为 rmqnamesrv
    -p 9876:9876容器内的端口9876挂载到宿主机9876端口上
    -v /home/rocketmq/data/namesrv/logs:/root/logs日志目录挂载
    -v /home/rocketmq/data/namesrv/store:/root/store数据目录挂载
    -e “MAX_POSSIBLE_HEAP=100000000”设置容器的最大堆内存为100000000
    rocketmqinc/rocketmq使用的镜像名称
    sh mqnamesrv启动namesrv服务
  3. 查看当前运行容器:

    1
    docker ps

    image-20230515162945200

启动 Broker 服务

  1. 创建 Broker 数据存储路径:

    1
    mkdir -p /home/rocketmq/data/broker/logs /home/rocketmq/data/broker/store
  2. 创建 conf 配置文件目录:

    1
    mkdir /home/rocketmq/conf
  3. 在配置文件目录下创建 broker.conf 配置文件:

    1
    vim /home/rocketmq/conf/broker.conf

    添加以下内容:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    # 所属集群名称,如果节点较多可以配置多个
    brokerClusterName = DefaultCluster
    #broker名称,master和slave使用相同的名称,表明他们的主从关系
    brokerName = broker-a
    #0表示Master,大于0表示不同的slave
    brokerId = 0
    #表示几点做消息删除动作,默认是凌晨4点
    deleteWhen = 04
    #在磁盘上保留消息的时长,单位是小时
    fileReservedTime = 48
    #有三个值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和异步表示Master和Slave之间同步数据的机制;
    brokerRole = ASYNC_MASTER
    #刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功状态,ASYNC_FLUSH不需要;
    flushDiskType = ASYNC_FLUSH
    # 设置broker节点所在服务器的ip地址
    brokerIP1 = 43.143.180.242 #服务器公网ip
    #是否允许自动创建topic
    autoCreateTopicEnable=true
  4. 启动容器:

    1
    docker run -d --restart=always --name rmqbroker --link rmqnamesrv:namesrv -p 10911:10911 -p 10909:10909 -v /home/rocketmq/data/broker/logs:/root/logs -v /home/rocketmq/data/broker/store:/root/store -v /home/rocketmq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf --privileged=true -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf
    参数描述
    -d以守护进程的方式启动
    –restart=alwaysdocker 重启时候容器自动重启
    –name rmqbroker容器的名字设置为 rmqbroker
    –link rmqnamesrv:namesrv需要和名为 rmqnamesrv 的容器进行连接,别名为 namesrv
    -p 10911:10911把容器的10911端口挂载到宿主机10911端口
    -p 10909:10909把容器的10909端口挂载到宿主机10909端口
    -v /home/rocketmq/data/broker/logs:/root/logs日志目录挂载
    -v /home/rocketmq/data/broker/store:/root/store数据目录挂载
    -v /home/rocketmq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf配置文件挂载
    –privileged=true开启特权
    -e “NAMESRV_ADDR=namesrv:9876”指定 nameserver 的地址,这里直接使用容器名(别名)代替容器 ip
    -e “MAX_POSSIBLE_HEAP=200000000”指定 broker 服务的最大堆内存
    rocketmqinc/rocketmq使用的镜像名称
    sh mqbroker -c /opt/docker/rocketmq/broker.conf指定配置文件启动broker节点

启动控制台

  1. 启动控制台容器:

    1
    docker run -d --name rmqadmin -e "JAVA_OPTS=-Drocketmq.namesrv.addr=公网:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false -Duser.timezone='Asia/Shanghai'" -v  /etc/localtime:/etc/localtime -p 9999:8080 styletang/rocketmq-console-ng
  2. 查看镜像:

    image-20230515165618054

  3. 浏览器访问:http://公网ip:9999/

    image-20230515165744370

  4. Docker 安装 RocketMQ 完成。若不能正常访问,请放行服务器端口。