centos7 安装rocketmq
RocketMQ 介绍
RocketMQ 是一个分布式消息中间件系统,最初由阿里巴巴开发,并且后来成为 Apache 顶级项目。它支持高吞吐量、高可靠性、低延迟的消息传递,并广泛应用于分布式系统和微服务架构中。RocketMQ 在分布式消息队列中具有高可用性和可伸缩性,能够处理大规模的数据流和事件驱动的消息传递需求。
RocketMQ 提供了丰富的消息处理特性,如支持消息的顺序性、事务性、延迟消息等,适用于金融、电商、物流等多个行业。它具有较强的消息可靠性保障,并能够支持多种复杂的场景。
RocketMQ 组件介绍
RocketMQ 由多个组件组成,各自负责不同的职能。这些组件协同工作,实现了 RocketMQ 的高可用性、可扩展性以及高吞吐量特性。
1. NameServer
NameServer 是 RocketMQ 中的一个轻量级组件,类似于 DNS,负责为生产者和消费者提供服务发现功能。它存储了 Broker 集群的路由信息,提供了消息发送和接收时的路由查询功能。
-
职责:
- 负责管理集群中的所有 Broker 信息。
- 提供路由查询服务,帮助生产者和消费者找到合适的 Broker。
- 为消息发送端和接收端提供轻量级的注册和发现机制。
-
高可用性:
- 可以部署多个 NameServer,保证高可用性,但不需要担心分布式一致性。
2. Broker
Broker 是 RocketMQ 的核心组件,负责存储消息、提供消息消费等服务。它包含消息的生产、存储、转发等功能。
-
职责:
- 存储和管理消息。
- 提供消息发布和消费服务。
- 根据消费者的消费进度,提供消息的推送或拉取功能。
- 提供消息的事务处理。
-
高可用性和分布式:
- Broker 可以水平扩展,支持多个 Broker 节点组成集群。
- 支持多种存储方式,如本地磁盘存储。
3. Producer
Producer 是生产者客户端,负责向 RocketMQ 发送消息。
-
职责:
- 将消息发送到 RocketMQ 集群中的 Broker。
- 可以支持异步发送、同步发送、单向发送等多种发送方式。
- 生产者通常会连接到多个 Broker 以保证消息的高可用性。
-
特性:
- 支持消息的顺序性发送。
- 可以实现消息的事务性发送,确保消息的可靠性。
4. Consumer
Consumer 是消费者客户端,负责从 RocketMQ 中拉取或接收消息并进行处理。
-
职责:
- 从 Broker 中拉取并消费消息。
- 消费者通常订阅一个或多个消息队列,并从中拉取消息。
- 支持广播模式和集群模式的消费。
-
特性:
- 消费者可以实现负载均衡(在多个消费者之间分摊消费负载)。
- 支持消息的顺序消费。
- 支持消息的幂等消费。
5. Topic
Topic 是 RocketMQ 中的消息分类标签,是消息队列的逻辑分组。每个 Topic 可以由多个消息队列组成,用于将消息区分开来。生产者通过 Topic 将消息发送到不同的消息队列,消费者通过订阅 Topic 来接收消息。
- 功能:
- 实现消息的分类。
- 每个 Topic 可以包含多个队列,每个队列独立存储消息。
6. Message Queue
消息队列是 RocketMQ 的基本存储单元,每个 Topic 下可以有多个队列,每个队列存储不同的消息副本。消息生产者将消息发送到队列中,消费者从队列中拉取消息。
- 特性:
- 消息队列在 RocketMQ 中具有高并发能力,并支持顺序消息消费。
- 每个消息队列是独立的,消费队列的消费者独立于其他队列的消费者。
7. Producer Group 和 Consumer Group
- Producer Group:生产者组,多个生产者可以组成一个生产者组,共享同一个 Topic 的消息发送权限。
- Consumer Group:消费者组,多个消费者可以组成一个消费组,确保同一消息只能被同一个消费组中的消费者消费(可以实现负载均衡)。
8. Transaction and Message Order
- 事务消息:RocketMQ 支持事务消息,可以保证消息的可靠性。在处理金融等需要事务一致性的场景时,事务消息非常有用。
- 顺序消息:RocketMQ 支持消息的顺序消费,消费者在拉取消息时,确保消息的消费顺序。
9. RocketMQ Console
RocketMQ Console 是一个基于 Web 的管理界面,帮助用户监控和管理 RocketMQ 集群、查看消息队列的状态、消费进度等信息。
- 功能:
- 实时监控集群、Broker、消息队列的状态。
- 提供消息查询和消息操作功能。
RocketMQ 主要特点
- 高可用性:通过多个 Broker 节点和 NameServer 支持高可用性架构,避免单点故障。
- 高吞吐量:支持高并发消息处理,可以处理数百万条消息。
- 低延迟:通过高效的网络通信机制,确保低延迟消息传输。
- 可靠性保障:支持消息的持久化、事务、回溯消费等多种可靠性机制,确保消息的可靠性。
- 扩展性:支持水平扩展,增加新的 Broker 节点,能够处理大规模的数据量。
rocketmq 官网地址:https://rocketmq.apache.org/zh/download
1、下载
wget https://dist.apache.org/repos/dist/release/rocketmq/5.2.0/rocketmq-all-5.2.0-bin-release.zip
2、解压
unzip rocketmq-all-5.2.0-bin-release.zip -d /data/
3、配置broker,新增brokerIP1和namesrvAddr
vim /data/rocketmq-all-5.2.0-bin-release/conf/broker.conf brokerClusterName = DefaultCluster brokerName = broker-a brokerId = 0 deleteWhen = 04 fileReservedTime = 48 brokerRole = ASYNC_MASTER flushDiskType = ASYNC_FLUSH brokerIP1=192.168.20.144 namesrvAddr=192.168.20.144:9876
4、修改rocket占用的内存
# 修改runserver.sh vim /data/rocketmq-all-5.2.0-bin-release/bin/runserver.sh
choose_gc_options() { # Example of JAVA_MAJOR_VERSION value : '1', '9', '10', '11', ... # '1' means releases before Java 9 JAVA_MAJOR_VERSION=$("$JAVA" -version 2>&1 | awk -F '"' '/version/ {print $2}' | awk -F '.' '{print $1}') if [ -z "$JAVA_MAJOR_VERSION" ] || [ "$JAVA_MAJOR_VERSION" -lt "9" ] ; then #修改 JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn500m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m" JAVA_OPT="${JAVA_OPT} -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 -XX:-UseParNewGC" JAVA_OPT="${JAVA_OPT} -verbose:gc -Xloggc:${GC_LOG_DIR}/rmq_srv_gc_%p_%t.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps" JAVA_OPT="${JAVA_OPT} -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m" else #修改 JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m" JAVA_OPT="${JAVA_OPT} -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0" JAVA_OPT="${JAVA_OPT} -Xlog:gc*:file=${GC_LOG_DIR}/rmq_srv_gc_%p_%t.log:time,tags:filecount=5,filesize=30M" fi }
# 修改runbroker.sh,大概在103行 vim /data/rocketmq-all-5.2.0-bin-release/bin/runbroker.sh
#修改 JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g" choose_gc_options JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow" JAVA_OPT="${JAVA_OPT} -XX:+AlwaysPreTouch" #修改 JAVA_OPT="${JAVA_OPT} -XX:MaxDirectMemorySize=1g"
5、启动namesrv
nohup /data/rocketmq-all-5.2.0-bin-release/bin/mqnamesrv &> /data/rocketmq-all-5.2.0-bin-release/mqnamesrv.log &
6、启动broker
nohup /data/rocketmq-all-5.2.0-bin-release/bin/mqbroker -n 0.0.0.0:9876 autoCreateTopicEnable=true &> /data/rocketmq-all-5.2.0-bin-release/mqbroker.log &
7、查看是否启动成功
[root@localhost bin]# jps 22256 BrokerStartup 21938 NamesrvStartup 22569 Jps [root@loc
8、部署可视化工具RocketMQ Dashboard,官网地址:https://rocketmq.apache.org/zh/download#rocketmq-dashboard。参考:https://blog.csdn.net/weixin_43811294/article/details/132307717
wget https://dist.apache.org/repos/dist/release/rocketmq/rocketmq-dashboard/1.0.0/rocketmq-dashboard-1.0.0-source-release.zip
9、解压
unzip rocketmq-dashboard-1.0.0-source-release.zip -d /data/
10、打包。注意maven版本官方推荐3.2+
cd /data/rocketmq-dashboard-1.0.0/ mvn clean package -Dmaven.test.skip=true
11、修改jar包的namesrv地址配置
vim rocketmq-dashboard-1.0.0.jar
rocketmq: config: # if this value is empty,use env value rocketmq.config.namesrvAddr NAMESRV_ADDR | now, default localhost:9876 # configure multiple namesrv addresses to manage multiple different clusters namesrvAddrs: - 192.168.20.144:9876 # if you use rocketmq version < 3.5.8, rocketmq.config.isVIPChannel should be false.default true isVIPChannel: # timeout for mqadminExt, default 5000ms timeoutMillis: # rocketmq-console's data path:dashboard/monitor dataPath: /data/config
12、可视化面板开启账号密码登录,创建在rocketmq.config.dataPath指定的目录下创建 users.properties
vim rocketmq-dashboard-1.0.0.jar
rocketmq.config.dataPath=/data/config rocketmq.config.loginRequired=true
mkdir /data/config && cd /data/config vim users.properties # 账号=密码,类型 0普通人员 1管理员 admin=sykj@2024,1
13、启动可视化面板
cd /data
nohup java -jar rocketmq-dashboard-1.0.0.jar &> rocketmq-dashboard.log &
关闭NameServer和Broker
/data/rocketmq-all-5.2.0-bin-release/bin/mqshutdown namesrv /data/rocketmq-all-5.2.0-bin-release/bin/mqshutdown broker
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~