【RocketMQ】RocketMQ安装

news2024/9/29 1:06:57

🎯 导读:该文档记录了在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.coloradmin.cn/o/2175342.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录Day17 图论-3

并查集理论基础 学习并查集 我们就要知道并查集可以解决什么问题 并查集主要有两个功能&#xff1a; 将两个元素添加到一个集合中判断两个元素在不在同一个集合 以下是代码模板 int n 1005; // n根据题目中节点数量而定&#xff0c;一般比节点数量大一点就好 vector<i…

jetlinks物联网平台学习4:http协议设备接入

http协议设备接入 1、创建产品2、配置设备接入方式3、配置网络组件4、上传消息协议5、填写网关信息6、配置http认证信息7、配置物模型8、创建设备9、使用apiPost模拟设备接入9.1、设备上线9.2、设备上报属性9.3、设备事件上报 1、创建产品 创建产品 2、配置设备接入方式 点击…

【Echarts】折线图和柱状图如何从后端动态获取数据?

&#x1f680;个人主页&#xff1a;一颗小谷粒 &#x1f680;所属专栏&#xff1a;Web前端开发 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 1.1 前端数据分析 1.2 数据库表分析 1.3 后端数据处理 1.4 前端接收数据 继上一篇文章&…

开源图像降噪算法与项目介绍【持续更新】

Intel Open Image Denoise 介绍&#xff1a;Intel Open Image Denoise&#xff08;OIDN&#xff09;是一个开源库&#xff0c;它提供了一系列高性能、高质量的去噪滤镜&#xff0c;专门用于光线追踪渲染的图像。这个库是Intel Rendering Toolkit的一部分&#xff0c;并且是在宽…

基因功能分析:DAP-seq与H3K4me3 ChIP-seq的协同效应

什么是DAP-Seq&#xff1f; DAP-Seq&#xff0c;即DNA亲和纯化测序技术&#xff0c;是一种创新的基因组分析方法。它通过体外表达转录因子&#xff0c;精确地鉴定转录因子与基因组的结合位点。与传统的ChIP-seq相比&#xff0c;DAP-Seq不受抗体和物种的限制&#xff0c;使得研…

springboot+vue+java校园共享厨房菜谱系统

目录 功能介绍使用说明系统实现截图开发核心技术介绍&#xff1a;开发步骤编译运行核心代码部分展示开发环境需求分析详细视频演示源码获取 功能介绍 用户 首页&#xff1a;展示系统基本信息&#xff0c;包括厨房介绍、使用指南、最新公告等。 登录注册&#xff1a;用户注册账…

【Qt笔记】QFrame控件详解

目录 引言 一、QFrame的基本特性 二、QFrame的常用方法 2.1 边框形状&#xff08;Frame Shape&#xff09; 2.2 阴影样式&#xff08;Frame Shadow&#xff09; 2.3 线条宽度&#xff08;Line Width&#xff09; 2.4 样式表(styleSheet) 三、QFrame的应用场景 四、应用…

906. 超级回文数

1. 题目 906. 超级回文数 2. 解题思路 题目意思很简单&#xff0c;在给定范围中找到所有满足&#xff0c;它本身是回文&#xff0c;且它的平方也是回文的数字个数。 这题需要注意题目给定的范围&#xff0c;后面很有用&#xff1a; 因为回文范围是有限的&#xff0c;那么我…

C++(9.26)

1.什么是虚函数&#xff0c;什么是纯虚函数 虚函数是在基类中声明为virtual的函数&#xff0c;可以被重新定义来实现多态&#xff0c;纯虚函数则是以0结尾的虚函数&#xff0c;是没有实现的虚函数。 2.基类为什么需要虚构析函数 为了防止在后面delete释放空间时导致溢出 数据…

【IPV6从入门到起飞】5-6 IPV6+Home Assistant(ESPHome+ESP-cam)实时监控

5-6 IPV6Home Assistant[ESPHomeESP-cam]实时监控 1、背景2、ESPHome 安装2-1 ESPHome 简述2-2 安装 3、创建ESP32-CAM设备4、编辑yaml配置4-1 找到合适的配置4-2 修改配置4-3 验证配置4-4 编译项目 5、烧录固件6、绑定设备7、效果实现 1、背景 在前面我们已经实现了数据采集与…

【Python游戏开发】扫雷游戏demo

准备步骤 项目开发使用【Mu 编辑器】 1.使用Mu编辑器创建新项目 2.点击【保存】&#xff0c;将项目保存到指定路径中 3.点击【图片】&#xff0c;会打开项目图片存储位置&#xff0c;将所需图片复制粘贴至该文件夹中 游戏编写 1.设置游戏场景 ROWS 15 # 设置行数 COLS …

【面试题】软件测试实习(含答案)

软件测试实习常见面试题&#xff0c;主要是功能测试相关的基础问题 目录 一、软件测试基础 1、介绍一下你最近的项目&#xff0c;以及工作职责 2、软件项目的测试流程? 3、黑盒测试与白盒测试的区别? 4、黑盒测试常见的设计方法?怎么理解等价类方法和边界值方法 1&…

GO语言环境搭建和字符说明

Go的三种安装方式 Go有多种安装方式&#xff0c;你可以选择自己喜欢的。这里我们介绍三种最常见的安装方式&#xff1a; 1.Go源码安装&#xff1a;这是一种标准的软件安装方式。对于经常使用Unix类系统的用户&#xff0c;尤其对于开发者来说&#xff0c;从源码安装是最方便而…

传奇架设教程:传奇登录器公告窗口如何设置?link.htm网页文件制作教程

今天给大家分享传奇登录器公告窗口的设置教程&#xff1a; 我们玩服时可以看到很多服的登录器公告看上去都很高大上&#xff0c;并且窗口比例也非常的合适&#xff0c;但是自己架设起来并没有看到窗口公告&#xff0c;这是为什么呢&#xff1f; 这是因为你的列表没有设置公告…

计算机视觉中的2D变换:用Python让图像‘动’起来

嘿&#xff0c;小伙伴们&#xff01;今天我们要聊的是计算机视觉中的2D变换——那些能让图像‘动’起来的技术。无论你是初学者还是资深开发者&#xff0c;这篇文章都将带你深入了解2D变换&#xff0c;并通过Python代码实战演示。准备好了吗&#xff1f;让我们开始吧&#xff0…

Humans or LLMs as the Judge? A Study on Judgement Bias

文章目录 题目摘要引言相关作品论法官的偏见实验方案结果与讨论欺骗LLM法官结论 题目 人类还是LLMs作为裁判&#xff1f;判断偏差研究 论文地址&#xff1a;https://arxiv.org/pdf/2402.10669 摘要 采用人类和大型语言模型(LLM)作为评估LLM性能的评判者(也称为人类和LLM-as-a…

多车合作自动驾驶框架CoDrivingLLM:基于大语言模型驱动的决策框架

Abstract 目前&#xff0c;全球范围内已开始对联网自动驾驶汽车&#xff08;CAVs&#xff09;进行道路测试&#xff0c;但它们在复杂场景中的安全性和效率表现仍不令人满意。合作驾驶利用CAVs的连接能力&#xff0c;通过协同作用超越个体表现&#xff0c;使其成为在复杂场景中…

MySQL篇(主从复制/读写分离/分库分表)(持续更新迭代)

目录 讲解一&#xff1a;主从复制 一、何为主从复制&#xff1f; 二、主从复制的优点 三、主从复制原理 四、主从复制环境搭建 1. 准备 2. 主库配置 2.1. 修改配置文件 /etc/my.cnf 2.2. 重启MySQL服务器 2.3. 授予主从复制权限 2.4. 查看二进制日志坐标 3. 从库配置…

ubuntu 安装harbor

#安装包 wget https://github.com/goharbor/harbor/releases/download/v2.10.3/harbor-offline-installer-v2.10.3.tgz wget https://github.com/goharbor/harbor/releases/download/v2.10.3/harbor-offline-installer-v2.10.3.tgz.asc#导入签名公钥 gpg --keyserver hkps://ke…

EDM平台大比拼 用户体验与营销效果双重测评

本文评测了ZohoCampaigns、Mailchimp、Sendinblue、AWeber四款EDM平台&#xff0c;分别适合中小企业、多平台集成、多功能集成、初学者等需求。建议企业根据自身规模、技术水平和功能需求选择最适合的平台。 一、Zoho Campaigns 功能概述 Zoho Campaigns是Zoho旗下的一款专注…