当前位置: 首页 > article >正文

【RocketMQ】RocketMQ安装

🎯 导读:该文档记录了在Linux环境下使用Apache RocketMQ的安装与配置流程,包括下载RocketMQ压缩包、上传至服务器并解压、配置环境变量及对nameServer和broker的运行脚本和配置文件进行调整。文档还提供了使用Docker安装部署的方法,以及启动nameServer和broker容器的具体命令。此外,文档涉及了RocketMQ控制台的安装步骤,并对在使用过程中遇到的问题给出了相应的解决方案,如通过修改配置启用安全性和账号密码验证。

文章目录

  • 安装方式一:Linux常规安装
    • 下载RocketMQ
    • 上传服务器
    • 解压
    • 配置环境变量
    • 修改nameServer的运行脚本
    • 修改broker的运行脚本
    • 修改broker的配置文件
    • 启动
    • RocketMQ控制台(RocketMQ-Console)的安装
  • 安装方式二:Docker安装RocketMQ
    • 下载RockerMQ需要的镜像
    • 启动NameServer服务
      • 创建NameServer数据存储路径
      • 启动NameServer容器
    • 启动Broker服务
      • 创建Broker数据存储路径
      • 创建conf配置文件目录
      • 在配置文件目录下创建broker.conf配置文件
      • 启动Broker容器
    • 启动控制台
    • 正常启动后的docker ps
    • 访问控制台
  • 安装方式三:官网Docker安装教程
    • 拉取RocketMQ镜像
    • 创建容器共享网络
    • 启动NameServer
    • 创建broker
    • 控制台
  • RocketMQ安全
    • Broker开启权限控制
    • Broker配置账号密码
      • Dokcer部署怎么改
    • 控制面板连接broker配置账号密码
    • springBoot配置文件使用账号密码
  • 其他
    • 发送消息报错
    • 云服务器开放端口
  • 控制台操作

本人安装方式使用的是 安装方式三,安装方式二尝试了一下,镜像拉不下来

安装方式一:Linux常规安装

了解了mq的基本概念和角色以后,我们开始安装rocketmq,建议在linux上

下载RocketMQ

下载地址:https://rocketmq.apache.org/dowloading/releases/

注意选择版本,这里我们选择4.9.2的版本,后面使用alibaba的其他组件时,版本需要对应

在这里插入图片描述

下载地址:

https://archive.apache.org/dist/rocketmq/4.9.2/rocketmq-all-4.9.2-bin-release.zip

上传服务器

在root目录下创建文件夹

mkdir rocketmq

将下载后的压缩包上传到阿里云服务器或者虚拟机中去

在这里插入图片描述

解压

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

如果你的服务器没有unzip命令,则下载安装一个

yum install unzip

解压之后文件目录如下:

在这里插入图片描述

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

配置环境变量

vim /etc/profile

在文件末尾添加

export NAMESRV_ADDR=阿里云公网IP:9876

修改nameServer的运行脚本

进入bin目录下,修改runserver.sh文件,将71行和76行的Xms和Xmx等改小一点

vim runserver.sh

在这里插入图片描述

保存退出

修改broker的运行脚本

进入bin目录下,修改runbroker.sh文件,修改67行

在这里插入图片描述

保存退出

修改broker的配置文件

进入conf目录下,修改broker.conf文件

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
namesrvAddr=localhost:9876
autoCreateTopicEnable=true
brokerIP1=阿里云公网IP

参数解释

  • namesrvAddr:nameSrv地址可以写localhost因为nameSrv和broker在一个服务器
  • autoCreateTopicEnable:自动创建主题,不然需要手动创建出来
  • brokerIP1:broker也需要一个公网ip,如果不指定,那么是阿里云的内网地址,我们在本地无法连接使用

启动

首先在安装目录下创建一个logs文件夹,用于存放日志

mkdir logs

在这里插入图片描述

一次运行两条命令

# 启动nameSrv
nohup sh bin/mqnamesrv >   ./logs/namesrv.log &
# 启动broker 这里的-c是指定使用的配置文件
nohup sh bin/mqbroker -c   conf/broker.conf > ./logs/broker.log &

查看启动结果

在这里插入图片描述

RocketMQ控制台(RocketMQ-Console)的安装

Rocketmq 控制台可以可视化MQ的消息发送!

旧版本源码是在rocketmq-external里的rocketmq-console,新版本已经单独拆分成dashboard

网址: https://github.com/apache/rocketmq-dashboard

下载地址:

https://github.com/apache/rocketmq-dashboard/archive/refs/tags/rocketmq-dashboard-1.0.0.zip

下载后解压出来,在跟目录下执行

mvn clean package -Dmaven.test.skip=true

在这里插入图片描述

在这里插入图片描述

将jar包上传到服务器上去

在这里插入图片描述

然后运行

nohup java -jar ./rocketmq-dashboard-1.0.0.jar 
rocketmq.config.namesrvAddr=127.0.0.1:9876   > ./rocketmq-4.9.3/logs/dashboard.log &

命令拓展:

  • --server.port指定运行的端口
  • --rocketmq.config.namesrvAddr=127.0.0.1:9876指定namesrv地址

访问:http://localhost:8001

运行访问端口是8001,如果从官网拉下来打包的话,默认端口是8080

在这里插入图片描述

安装方式二:Docker安装RocketMQ

这里下载不成功建议移步到下一节,我拉取这里的镜像错误了

下载RockerMQ需要的镜像

docker pull rocketmqinc/rocketmq
docker pull styletang/rocketmq-console-ng

启动NameServer服务

创建NameServer数据存储路径

mkdir -p /home/rocketmq/data/namesrv/logs   /home/rocketmq/data/namesrv/store

启动NameServer容器

docker run -d \
    --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

启动Broker服务

创建Broker数据存储路径

mkdir -p /home/rocketmq/data/broker/logs /home/rocketmq/data/broker/store

创建conf配置文件目录

mkdir /home/rocketmq/conf

在配置文件目录下创建broker.conf配置文件

# 所属集群名称,如果节点较多可以配置多个
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 = 你服务器外网ip

启动Broker容器

docker run -d  --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

启动控制台

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

正常启动后的docker ps

在这里插入图片描述

访问控制台

http://你的服务器外网ip:9999/

在这里插入图片描述

安装方式三:官网Docker安装教程

教程链接:https://rocketmq.apache.org/zh/docs/4.x/quickstart/02quickstartWithDocker

5.0版本:https://rocketmq.apache.org/zh/docs/quickStart/02quickstartWithDocker

拉取RocketMQ镜像

docker pull apache/rocketmq:4.9.6

在这里插入图片描述

创建容器共享网络

RocketMQ中有多个服务,需要创建多个容器,创建 docker 网络便于容器间相互通信。

docker network create rocketmq

在这里插入图片描述

启动NameServer

# 启动NameServer
docker run -d --name rmqnamesrv -p 9876:9876 --net rocketmq apache/rocketmq:4.9.6 sh mqnamesrv

# 验证NameServer是否启动成功
docker logs -f rmqnamesrv

在这里插入图片描述

创建broker

# 创建目录 
mkdir /home/rocketmq/conf
# 如果上面的命令创建失败,直接加上-p创建多级目录
mkdir -p /home/rocketmq/conf

# 配置 Broker 的 IP 地址(服务器安装建议使用服务器ip),写到配置文件中
echo "brokerIP1=127.0.0.1" >/home/rocketmq/conf/broker.conf

# 启动 4.9.6 版本Broker
docker run -d \
--name rmqbroker \
--net rocketmq \
-p 10912:10912 -p 10911:10911 -p 10909:10909 \
-e "NAMESRV_ADDR=rmqnamesrv:9876" \
-v /home/rocketmq/conf/broker.conf(在服务器的地址,删):/home/rocketmq/conf/broker.conf \
apache/rocketmq:4.9.6 sh mqbroker \
-c /home/rocketmq/conf/broker.conf

# 启动 5.3.0 版本Broker
docker run -d \
--name rmqbroker \
--network rocketmq \
-p 10912:10912 -p 10911:10911 -p 10909:10909 \
-p 8080:8080 -p 8081:8081 \
-e "NAMESRV_ADDR=rmqnamesrv:9876" \
-v /home/rocketmq/conf/broker.conf(在服务器的地址,删):/home/rocketmq/conf/broker.conf \
apache/rocketmq:5.3.0 sh mqbroker --enable-proxy \
-c /home/rocketmq/conf/broker.conf

# 验证 Broker 是否启动成功
docker logs rmqbroker

在这里插入图片描述

控制台

控制台按照上面的Docker方式安装即可,不过我安装之后,访问会获取不到数据

在这里插入图片描述

最后查看原因,发现是连接到null,我也不知道是什么原因

在这里插入图片描述

最后没办法,我只好去把项目(https://github.com/apache/rocketmq-dashboard)拉取下来,在IDEA中启动

在这里插入图片描述

本地启动起来之后,可以获取到数据了

在这里插入图片描述

也只能先暂且这样学习了,如果有大佬知道原因,麻烦教教我o(╥﹏╥)o

RocketMQ安全

Broker开启权限控制

在broker.conf中添加aclEnable=true

在这里插入图片描述

Broker配置账号密码

修改plain_acl.yml

在这里插入图片描述

plain_acl.yml内容

在这里插入图片描述

可以复制一份副本出来,再进行修改

在这里插入图片描述

Dokcer部署怎么改

# 进入容器,找到原本的plain_acl.yml位置
[root@localhost ~]# docker exec -it 2c84 bash
rocketmq@2c8411977723:~/rocketmq-5.3.0/bin$ cd ../
rocketmq@2c8411977723:~/rocketmq-5.3.0$ ls
benchmark  bin  conf  lib  LICENSE  NOTICE  README.md
rocketmq@2c8411977723:~/rocketmq-5.3.0$ cd conf
rocketmq@2c8411977723:~/rocketmq-5.3.0/conf$ ls
2m-2s-async  2m-noslave   container   dledger        rmq.broker.logback.xml  rmq.controller.logback.xml  rmq-proxy.json         rmq.tools.logback.xml
2m-2s-sync   broker.conf  controller  plain_acl.yml  rmq.client.logback.xml  rmq.namesrv.logback.xml     rmq.proxy.logback.xml  tools.yml
# 查看路径
rocketmq@2c8411977723:~/rocketmq-5.3.0/conf$ pwd
/home/rocketmq/rocketmq-5.3.0/conf

# 退出容器
rocketmq@2c8411977723:~/rocketmq-5.3.0/conf$ exit;
exit

# 复制容器中的配置文件到本地
[root@localhost ~]# docker cp 2c84:/home/rocketmq/rocketmq-5.3.0/conf/plain_acl.yml /home/rocketmq/conf/
Successfully copied 3.07kB to /home/rocketmq/conf/

# 将容器中的plain_acl.yml复制到本地中
docker cp 2c84:/home/rocketmq/rocketmq-5.3.0/conf/plain_acl.yml /home/rocketmq/conf/

删除掉原来的容器(docker rm 容器id/名称),然后使用如下命令重新启动一个容器

docker run -d \
--name rmqbroker5.3 \
--network rocketmq \
-p 10912:10912 -p 10911:10911 -p 10909:10909 \
-p 8080:8080 -p 8081:8081 \
-e "NAMESRV_ADDR=rmqnamesrv:9876" \
-v /home/rocketmq/conf/broker.conf:/home/rocketmq/rocketmq-5.3.0/conf/broker.conf \
-v /home/rocketmq/conf/plain_acl.yml:/home/rocketmq/rocketmq-5.3.0/conf/plain_acl.yml \
apache/rocketmq:5.3.0 sh mqbroker --enable-proxy \
-c /home/rocketmq/rocketmq-5.3.0/conf/broker.conf

控制面板连接broker配置账号密码

修改控制面板的配置文件放开52/53行,把49行改为true,上传到服务器的jar包平级目录下即可

在这里插入图片描述

【详细步骤】

将rocketmq-dashboard的jar包解压出来,修改application.properties

设置面板也要登录

在这里插入图片描述

再配置面板的账号密码

在这里插入图片描述

在这里插入图片描述

将配置文件放到jar包的同级目录下,这样jar启动的时候会优先使用平级的配置文件,这样就可以使用账号密码了

在这里插入图片描述

springBoot配置文件使用账号密码

# 数据源配置
rocketmq:
  # rocketMq的nameServer地址
  name-server: 127.0.0.1:9876
  producer:
    # 生产者组别
    group: ips-product-group
    # 消息发送的超时时间
    send-message-timeout: 10000
    # 异步消息发送失败重试次数
    retry-times-when-send-async-failed: 2
    # 发送消息的最大大小,单位字节,这里等于4M
    max-message-size: 4194304
    access-key: ddd
    secret-key: 12345678
  consumer:
    access-key: ddd
    secret-key: 12345678

其他

发送消息报错

如果后端连接RocketMQ发送消息报错的话org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout

解决:去broker.conf把127.0.0.1换成服务器IP

云服务器开放端口

为了能让开发机连接到服务器的RocketMQ,需要开放如下两个端口

  • 9876
  • 10912

控制台操作

  • 重置消费点位:将一个组的消费节点设置在之前的某一个时间点上去,从这个时间点开始往后消费
  • 跳过堆积:选择一个组,跳过堆积以后,这个组里面的的所有都不会被消费了

http://www.kler.cn/a/324029.html

相关文章:

  • ServletConfig、ServletContext、HttpServletRequest与HttpServletResponse常见API
  • daos集群部署(单机)
  • oneplus3t-Lineage16.1-Android.bp
  • C++中 ,new int(10),new int(),new int[10],new int[10]()
  • 英伟达基于Mistral 7B开发新一代Embedding模型——NV-Embed-v2
  • 基于Matlab的碎纸片的自动拼接复原技术
  • 560. 和为 K 的子数组
  • 【Linux】修改用户名用户家目录
  • 切换笔记本键盘的启用与禁用状态
  • windows C++-创建使用特定计划程序策略的代理
  • Redis缓存双写一致性笔记(上)
  • 机器学习西瓜书笔记(十一) 第十一章特征选择与稀疏学习+代码
  • JAVA-内部类和匿名内部类
  • Pandas空值识别,空值填充,空值过滤方法超详细解读
  • 如何手动安装libcrypto.so.10和libssl.so.10这两个库?
  • C语言 | Leetcode C语言题解之第440题字典序的第K小数字
  • pycharm2024版 搭配Anaconda创建pytorch项目
  • 算法分析,主定理
  • 【解决方案】Java 互联网项目中常见的 Redis 缓存应用场景
  • c语言和c++一样吗
  • Spring Boot实现房产租赁业务逻辑
  • 互联网安全为什么要做风险评估:构建数字世界的坚固防线
  • 排序算法C++
  • 经济不好,但是遍地都是赚钱的机会
  • 万元购车平台源码开发总结与关键技术解析
  • 如何应对“.DevicData-C-XXXXXXXX”勒索病毒:建议与防范措施