【Spring Cloud Alibaba】Linux安装RocketMQ以及RocketMQ Dashboard可视化工具

环境准备:Linux安装Java环境(OracleJDK)

在当今分布式架构的开发中,消息队列成为了一种常见的解决方案。RocketMQ是阿里巴巴开源的分布式消息中间件,具有高吞吐量、高可用性和强大的扩展性,因此在构建大规模、高可靠性的应用系统时备受推崇。而在使用RocketMQ时,为了更好地了解消息的流动和监控,RocketMQ Dashboard成为了一个不可或缺的可视化工具。

本篇博客将带大家一步步在Linux系统中安装RocketMQ,并介绍如何配置和使用RocketMQ Dashboard。我们将深入探讨这两者的安装与集成过程,帮助大家快速上手并运用于实际项目中。无论是初次接触Spring Cloud Alibaba,还是对RocketMQ和Dashboard感兴趣,本文都将为大家提供详尽的指导与实例。

💽 rocketmq

💽第一步,下载

https://archive.apache.org/dist/rocketmq/4.9.1/

ROCKETMQ下载 RocketMQ 的安装包分为两种,二进制包和源码包。 二进制包是已经编译完成后可以直接运行的,源码包是需要编译后运行的

下载二进制包

💽第二步,解压

java 复制代码
unzip rocketmq-all-4.9.1-bin-release.zip 

💽第三步,启动NameServer

运行bin文件夹里面的mqnamesrv脚本

java 复制代码
sh mqnamesrv

如果启动不成功,报错如下

java 复制代码
Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000006ec800000, 2147483648, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 2147483648 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /opt/rocketmq/rocketmq-all-4.9.1-bin-release/bin/hs_err_pid19004.log

那就是jvm内存不足,修改runserver.sh,原因是mqnamesrv实际运行的是runserver.sh脚本

mqnamesrv:

java 复制代码
vim runserver.sh

修改为

java 复制代码
-Xms256m -Xmx256m -Xmn125m 

出现下面语句则启动成功

java 复制代码
The Name Server boot success. serializeType=JSON

编写启动脚本后台运行

java 复制代码
vim startup.sh

添加内容如下

java 复制代码
nohup sh bin/mqnamesrv &

运行启动脚本即可

上面启动的NameServer在rocketmq中的位置如下


NameServer是一个简单的 Topic 路由注册中心 ,支持 Topic、Broker 的动态注册与发现。 主要包括两个功能: Broker管理 ,NameServer接受Broker集群的注册信息并且保存下来作为路由信息的基本数据。然后提供心跳检测机制,检查Broker是否还存活; 路由信息管理,每个NameServer将保存关于 Broker 集群的整个路由信息和用于客户端查询的队列信息。Producer和Consumer通过NameServer就可以知道整个Broker集群的路由信息,从而进行消息的投递和消费。 NameServer通常会有多个实例部署,各实例间相互不进行信息通讯。Broker是向每一台NameServer注册自己的路由信息,所以每一个NameServer实例上面都保存一份完整的路由信息。当某个NameServer因某种原因下线了,客户端仍然可以向其它NameServer获取路由信息。

💽第四步,启动Broker

如果你的mq部署在公网上面,例如阿里云

java 复制代码
vim conf/broker.conf

修改broker配置文件,否则别的应用连接不上 新增两行:

java 复制代码
namesrvAddr = xx.xx.xx.xx:9876
brokerIP1=xx.xx.xx.xx  # 你的公网IP
java 复制代码
nohup sh bin/mqbroker -c conf/broker.conf -n localhost:9876 &

-n localhost:9876的意思就是指定nameserver地址为localhost:9876,可以通过-h查看配置信息

如果出现了以下的报错信息,则情况和nameserver一样需要修改启动脚本

java 复制代码
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, 8589934592, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 8589934592 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /opt/rocketmq/rocketmq-all-4.9.1-bin-release/hs_err_pid24331.log
java 复制代码
vim bin/runbroker.sh 
java 复制代码
-Xms256m -Xmx256m

再次启动即可,出现如下则成功

java 复制代码
The broker[VM-12-4-centos, 10.0.12.4:10911] boot success. serializeType=JSON and name server is localhost:9876

至此,一个单Master的RocketMQ集群已经部署起来了 通过ps命令可以看到有两个服务启动成功

之后云服务器开放端口

💽第五步,关闭服务

java 复制代码
$ sh bin/mqshutdown broker
The mqbroker(36695) is running...
Send shutdown request to mqbroker(36695) OK

$ sh bin/mqshutdown namesrv
The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK

💽rocketmq-dashboard

💽第一步,下载rocketmq-dashboard

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

💽第二步,解压打包启动

java 复制代码
mvn clean package -Dmaven.test.skip=true

之后会打成一个jar包

运行起来即可

java 复制代码
nohup java -jar -Drocketmq.namesrv.addr=127.0.0.1:9876 rocketmq-dashboard-1.0.0.jar &

访问ip:8080 即可

通过本文的介绍和指导,大家应该已经成功地在Linux系统上安装了RocketMQ,并且了解了RocketMQ Dashboard的配置和使用方法。RocketMQ作为一款高性能、高可靠性的分布式消息中间件,在现代分布式架构的开发中发挥着不可或缺的作用。而RocketMQ Dashboard则为我们提供了一个直观、方便的可视化界面,让我们更加轻松地监控和管理消息队列。

相关推荐
K神3 分钟前
Spring Cloud Gateway实现分布式限流和熔断降级
后端
源码宝23 分钟前
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
java·大数据·源码·智慧工地·智能监测·智能施工
码不停蹄的玄黓1 小时前
JUC核心解析系列(五)——执行框架(Executor Framework)深度解析
java·jvm·spring boot·spring cloud
白总Server1 小时前
GaussDB 分布式数据库调优(架构到全链路优化)
java·网络·c++·架构·go·scala·数据库架构
import_random1 小时前
[macos]rocketmq(安装)
后端
listhi5201 小时前
k8s使用私有harbor镜像源
java·docker·kubernetes
在未来等你1 小时前
Java并发编程实战 Day 21:分布式并发控制
java·多线程·并发编程
程序员小假1 小时前
你会不会使用 SpringBoot 整合 Flowable 快速实现工作流呢?
java·后端
来自外太空的鱼-张小张1 小时前
java将pdf文件转换为图片工具类
java·python·pdf
代码中の快捷键2 小时前
如何实现一个登录功能?
java·开发语言