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

 

posted @   苦逼yw  阅读(669)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示