自学内容网 自学内容网

Centos7安装RocketMQ[图文教程]

RocketMQ介绍

官网地址:https://rocketmq.apache.org/zh/

‌RocketMQ是一个分布式消息中间件,具有高性能、高可靠、高实时和分布式等特点。‌ 它支持事务消息、顺序消息、批量消息、定时消息和消息回溯等功能。RocketMQ的核心组件包括Producer、Consumer、Broker和NameServer,这些组件共同工作,提供了低延迟和高吞吐量的消息处理能力‌。
RocketMQ的特点包括:
‌高性能‌:支持万亿级吞吐量,满足微服务和大数据场景需求。
‌高可靠‌:提供金融级稳定性,广泛用于交易核心链路。
‌高实时‌:实现实时的消息订阅和消费机制。
‌分布式‌:Producer、Consumer和队列都可以分布式部署,支持水平扩展。
‌严格的消息顺序‌:通过发送到同一队列保证消费顺序。
‌丰富的消息拉取模式‌:支持推(Push)和拉(Pull)两种模式,并提供多种消息协议。
‌亿级消息堆积能力‌:确保在高负载情况下消息不会丢失。
‌较少的依赖‌:采用Shared-nothing架构,零外部依赖,确保系统稳定‌。
RocketMQ的应用场景包括云边端一体化数据处理、微服务架构中的消息治理、Serverless应用场景等。它支持海量Topic需求,可以与任意系统建立连接,适用于构建流式ETL、数据管道和数据湖等。RocketMQ还被广泛应用于电商项目、订单交易系统等高并发系统中,帮助提升开发效率和系统稳定性‌。

基于Linux服务部署RocketMQ(单机)

配置JDK环境

参考另一篇教程:CentOS7安装配置JDK环境 保姆级教程

下载RocketMQ

官方下载地址
在这里插入图片描述
这里我们可以直接下载二进制(Binary)的包(如果有需要自己编译的话可以下载源码包(Source))
下载完后我们需要上传到服务器上面。

这里推荐直接在服务器上使用命令下载,这样就可以跳过上传这一步操作了

# 这里我们下载版本是5.2.0(就冲这个版本号 “我爱你”)
# 使用wget命令
wget https://dist.apache.org/repos/dist/release/rocketmq/5.2.0/rocketmq-all-5.2.0-bin-release.zip

# 使用curl命令
curl -O https://dist.apache.org/repos/dist/release/rocketmq/5.2.0/rocketmq-all-5.2.0-bin-release.zip

在这里插入图片描述

部署RocketMQ

1、解压
# 解压
unzip rocketmq-all-5.2.0-bin-release.zip

# 移动到固定位置(这里可以使用自己的位置)
cp -r rocketmq-all-5.2.0-bin-release /usr/local/rocketmq
2、修改VM参数

RocketMQ默认的内存分配比较大,机器内存比较小的话需要调整一下。具体配置按需调整
runbroker.sh
在这里插入图片描述

3、配置环境变量
echo "export ROCKETMQ_HOME=/opt/rocketmq" >> ~/.bashrc
echo "export PATH=\$PATH:\$ROCKETMQ_HOME/bin" >> ~/.bashrc
source ~/.bashrc

或者操作 /etc/profile文件

4、编写Service文件

在Linux系统中,服务的配置文件通常位于/etc/systemd/system/目录下。当你创建了一个新的服务文件后,需要重新加载systemd的配置,并重启服务以使新服务生效。

  • mqnameser.service
    [Unit]
    Description=RocketMQ NameServer Service
    After=network.target
    
    [Service]
    Type=simple
    ExecStart=/usr/local/rocketmq/bin/mqnamesrv
    ExecStop=/usr/local/rocketmq/bin/mqshutdown namesrv
    User=root
    Restart=on-failure
    RestartSec=5s
    StandardOutput=syslog
    StandardError=syslog
    SyslogIdentifier=mqnameser
    LimitNOFILE=65536
    
    [Install]
    WantedBy=multi-user.target
    
  • mqbroker.service
    [Unit]
    Description=RocketMQ Broker Service
    After=network.target mqnameser.service
    
    [Service]
    Type=simple
    ExecStart=/usr/local/rocketmq/bin/mqbroker -n localhost:9876
    ExecStop=/usr/local/rocketmq/bin/mqshutdown broker
    User=root
    Restart=on-failure
    RestartSec=5s
    StandardOutput=syslog
    StandardError=syslog
    SyslogIdentifier=mqbroker
    LimitNOFILE=65536
    
    [Install]
    WantedBy=multi-user.target
    
  • mqproxy.service
    [Unit]
    Description=RocketMQ Proxy Service
    After=network.target mqbroker.service
    
    [Service]
    Type=simple
    ExecStart=/usr/local/rocketmq/bin/mqproxy -n localhost:9876
    ExecStop=/usr/local/rocketmq/bin/mqshutdown proxy
    User=root
    Restart=on-failure
    RestartSec=5s
    StandardOutput=syslog
    StandardError=syslog
    SyslogIdentifier=mqproxy
    LimitNOFILE=65536
    
    [Install]
    WantedBy=multi-user.target
    
5、启动服务
# 重载服务
sudo systemctl daemon-reload

sudo systemctl start mqnameser.service

sudo systemctl start mqbroker.service

sudo systemctl start mqproxy.service

基于Docker方式部署RocketMQ

安装Docker

请参考另一篇教程:CentOS7安装Docker教程(图文)

编写docker-compose文件

# 创建服务目录,可以自定义 按自己的需要调整
mkdir /data/rocketmq
# 进入目录
cd /data/rocketmq
# 创建文件
touch docker-compose.yml

docker-compose.yml文件:

version: '3'
services:
  namesrv:
    image: apache/rocketmq:5.2.0
    container_name: rmqnamesrv
    ports:
      - 9876:9876
    networks:
      - rocketmq
    command: sh mqnamesrv
  broker:
    image: apache/rocketmq:5.2.0
    container_name: rmqbroker
    ports:
      - 10909:10909
      - 10911:10911
      - 10912:10912
    environment:
      - NAMESRV_ADDR=rmqnamesrv:9876
    depends_on:
      - namesrv
    networks:
      - rocketmq
    command: sh mqbroker
  proxy:
    image: apache/rocketmq:5.2.0
    container_name: rmqproxy
    networks:
      - rocketmq
    depends_on:
      - broker
      - namesrv
    ports:
      - 8080:8080
      - 8081:8081
    restart: on-failure
    environment:
      - NAMESRV_ADDR=rmqnamesrv:9876
    command: sh mqproxy
  console:
    image: styletang/rocketmq-console-ng:latest
    restart: always
    container_name: rmqconsole
    networks:
      - rocketmq
    depends_on:
      - namesrv
    ports:
      - 8082:8080
    environment:
        JAVA_OPTS: "-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
networks:
  rocketmq:
    driver: bridge

启动RocketMQ服务

cd /data/rocketmq/
# 启动服务
docker-compose up -d
# 查看docker运行中的服务
docker ps

# 停止服务
docker-compose down

部署RocketMQ-Dashboard服务

RocketMQ Dashboard 是 RocketMQ 的管控利器,为用户提供客户端和应用程序的各种事件、性能的统计信息,支持以可视化工具代替 Topic 配置、Broker 管理等命令行操作。

官网介绍
源码github仓库地址

基于docker镜像部署

没有docker环境的参考这篇文章:CentOS7安装Docker教程(图文)

  1. 拉取 rocketmq-dashboard 镜像
    docker pull apacherocketmq/rocketmq-dashboard:latest
    
  2. docker 容器中运行 rocketmq-dashboard
    $ docker run -d --name rocketmq-dashboard -e "JAVA_OPTS=-Drocketmq.namesrv.addr=127.0.0.1:9876" -p 8080:8080 -t apacherocketmq/rocketmq-dashboard:latest
    

    提示
    namesrv.addr:port 替换为 rocketmq 中配置的 nameserver 地址:端口号
    开放端口号:808098761091111011 端口
    云服务器:设置安全组访问规则
    本地虚拟机:关闭防火墙,或 -add-port

基于源码部署

源码地址:apache/rocketmq-dashboard

下载并解压,切换至源码目录 rocketmq-dashboard-master/

  1. 编译rocketmq-dashboard
    mvn clean package -Dmaven.test.skip=true
    
  2. 运行 rocketmq-dashboard
    # 这里的rocketmq-dashboard-1.0.1-SNAPSHOT.jar文件名请使用实际名称(因为后续版本会迭代,版本号会更新)
    java -jar target/rocketmq-dashboard-1.0.1-SNAPSHOT.jar
    

    提示:Started App in x.xxx seconds (JVM running for x.xxx) 启动成功
    浏览器页面访问:namesrv.addr:8080
    关闭 rocketmq-dashboard : ctrl + c
    再次启动:执行 步骤2
    tips:下载后的源码需要上传到 Linux 系统上编译,本地编译可能会报错。

常见问题

  1. 碰上服务无法访问,先检查服务日志是否正常启动,再检查服务器防火墙和安全组是否有放开相应的端口。

原文地址:https://blog.csdn.net/weixin_41394654/article/details/142763688

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!