Centos7安装RocketMQ[图文教程]

news2024/12/23 23:39:44

文章目录

    • RocketMQ介绍
    • 基于Linux服务部署RocketMQ(单机)
      • 配置JDK环境
      • 下载RocketMQ
      • 部署RocketMQ
        • 1、解压
        • 2、修改VM参数
        • 3、配置环境变量
        • 4、编写Service文件
        • 5、启动服务
    • 基于Docker方式部署RocketMQ
      • 安装Docker
      • 编写`docker-compose`文件
      • 启动RocketMQ服务
    • 部署RocketMQ-Dashboard服务
      • 基于docker镜像部署
      • 基于源码部署
    • 常见问题

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2212748.html

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

相关文章

前端学习-css的背景(十六)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 背景颜色 语法格式 背景图片 语法格式 背景平铺 语法格式 背景图片位置 语法格式 参数代表的意思 参数是方位名词 参数是精确单位 参数是混合单位 背…

架构设计笔记-11-未来信息综合技术

知识要点 云原生架构原则包括:服务化原则、弹性原则、可观测原则、韧性原则、所有过程自动化原则、零信任原则和架构持续演进原则。 区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可…

【项目案例】-音乐播放器-Android前端实现-Java后端实现

精品专题: 01.C语言从不挂科到高绩点 https://blog.csdn.net/yueyehuguang/category_12753294.html?spm1001.2014.3001.5482https://blog.csdn.net/yueyehuguang/category_12753294.html?spm1001.2014.3001.5482 02. SpringBoot详细教程 https://blog.csdn.ne…

项目管理系统如何助力新药研发?药物研发企业康诺亚上线瑞杰项目管理系统

在新药研发过程中,其特点是:周期长、风险高、投入大,同时还要与其他科学相结合,相互渗透、更加需要多部门的共同参与,因此面临的问题相对复杂,而且要求也比较高。所以在这一过程中,必须对新药研…

软考系统分析师知识点十一:系统规划

前言 今年报考了11月份的软考高级:系统分析师。 考试时间为:11月9日。 倒计时:26天。 目标:优先应试,其次学习,再次实践。 复习计划第一阶段:扫平基础知识点,仅抽取有用信息&am…

49 | 桥接模式:如何实现支持不同类型和渠道的消息推送系统?

上一篇文章我们学习了第一种结构型模式:代理模式。它在不改变原始类(或者叫被代理类)代码的情况下,通过引入代理类来给原始类附加功能。代理模式在平时的开发经常被用到,常用在业务系统中开发一些非功能性需求&#xf…

嵌入式~CAN-专辑2

我自己的原文哦~ 只发CAN相关2 随时更新~~ 一、CAN总线错误分析与解决 从实际工作中碰到的具体问题来分析一些常见的CAN总线错误和解决办法。 CAN节点数据收发过程 我们知道,CAN总线上的每个节点往总线上发送数据的同时,会读取总线上的数据&#x…

stm32单片机个人学习笔记10(TIM编码器接口)

前言 本篇文章属于stm32单片机(以下简称单片机)的学习笔记,来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记,只能做参考,细节方面建议观看视频,肯定受益匪浅。 STM32入门教程-2023版 细…

简单实现手机投屏到电脑代码

1、从手机截图到sdcard 2、将图片导出到PC 3、从PC加载图片 4、开启定时器 1、 private static void takeScreenshot(String path) {long t1 System.currentTimeMillis();String command "adb devices"; // 替换为你需要执行的shell命令String command1 "…

氧化锆ZrO2纳米颗粒50nm|L-ZrO2@mSiO2|Ir1-N-C/ZrO2|AuPd/HB-ZrO2

氧化锆ZrO2纳米颗粒50nm|L-ZrO2mSiO2|Ir1-N-C/ZrO2|AuPd/HB-ZrO2 氧化锆(ZrO₂)纳米颗粒,特别是直径为50纳米(nm)的颗粒,是一种具有多种应用前景的功能材料。这种材料因其独特的物理和化学性质&#xff0c…

大一计算机课程之线性代数

《大一计算机课程之线性代数》 在大一的计算机课程中,线性代数是一门极为重要的基础学科,它就像一把神奇的钥匙,为计算机科学领域的诸多方面开启了智慧之门。 线性代数主要研究线性方程组、向量空间、线性变换等内容。对于计算机专业的学生…

Python基础语法条件

注释 注释的作用 通过用自己熟悉的语言,在程序中对某些代码进行标注说明,这就是注释的作用,能够大大增强程序的可读性。 注释的分类及语法 注释分为两类:单行注释 和 多行注释。 单行注释 只能注释一行内容,语法如下…

LabVIEW提高开发效率技巧----事件触发模式

事件触发模式在LabVIEW开发中是一种常见且有效的编程方法,适用于需要动态响应外部或内部信号的场景。通过事件结构(Event Structure)和用户自定义事件(User Events),开发者可以设计出高效的事件驱动程序&am…

深度探索:Linux CentOS 7内核的奥秘与管理之道

🐇明明跟你说过:个人主页 🏅个人专栏:《Linux :从菜鸟到飞鸟的逆袭》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、Linux简介 2、CentOS 7简介 3、什么是内核 …

【3dgs】总结3DGS与NeRF如何重塑SLAM(24年4月最新进展)

【3dgs】总结3DGS与NeRF如何重塑SLAM! 1. 摘要2. 简洁3. 背景3.1 Existing SLAM Surveys3.2 progress in Radiance Field Theory3.3.1 NeRF3.3.2 3dgs3.4 数据集 4 数据集4.1 SLAM3.1 RGB-D SLAM方法3.1.1 基于NeRF风格的RGB-D SLAM3.1.2 基于3DGS风格的 RGB-D SLAM…

PHP政务招商系统——高效连接共筑发展蓝图

政务招商系统——高效连接,共筑发展蓝图 🏛️ 一、政务招商系统:开启智慧招商新篇章 在当今经济全球化的背景下,政务招商成为了推动地方经济发展的重要引擎。而政务招商系统的出现,更是为这一进程注入了新的活力。它…

【C++】踏上C++学习之旅(一):初识C++和命名空间

文章目录 前言1. 初识C2. C的发展阶段2. 命名空间2.1 为什么要有命名空间?2.2 命名空间的语法2.3 命名空间的原理2.4 使用命名空间的三种方式2.4.1 加命名空间名称及作用域限定符( :: )2.4.2 使用using关键字将命名空间中某个成员 引入2.4.3 使用using namespace 命…

注意力机制篇 | 清华大学提出Focused Linear Attention取代Self-Attention成为ViT的新宠

前言:Hello大家好,我是小哥谈。Focused Linear Attention(聚焦线性注意力)是一种用于视觉Transformer模型的注意力机制,旨在提高效率和表现力,它解决了传统线性注意力方法的两个主要问题:聚焦能力和特征多样性。🌈 目录 🚀1.基础概念 🚀2.网络结构 🚀3.…

网络安全学习路线-适合入门小白

首先说明,我是一名CTF的web手,这是我自己亲身学习网络安全的路线,希望能够帮到大家,我虽然不是大牛,但我也希望能够帮助一些网安小白找到自己学习的方向,后面有就业的详细安全技术要求,如果真想…

大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…