Linux阿里云服务器安装RocketMQ教程

news2025/4/5 20:38:35

        本文为个人云服务器上搭建RocketMQ教程,用于帮助大家降低安装学习成本,提高学习效率。本人在服务器上(我用的是阿里云服务器)安装MQ时遇到了大大小小的问题,因此在最终完成部署后,希望能总结一个教程,帮助大家一键高效完成部署。

在实际部署前,先带大家回顾一下RocketMQ的核心概念及工作流程。

RocketMQ核心概念:

  • NameServer:可以理解为是一个注册中心,主要是用来保存topic路由信息,管理Broker。在NameServer的集群中,NameServer与NameServer之间是没有任何通信的。
  • Broker:核心的一个角色,主要是用来保存topic的信息,接受生产者产生的消息,持久化消息。在一个Broker集群中,相同的BrokerName可以称为一个Broker组,一个Broker组中,BrokerId为0的为主节点,其它的为从节点。BrokerName和BrokerId是可以在Broker启动时通过配置文件配置的。每个Broker组只存放一部分消息。
  • 生产者:生产消息的一方就是生产者
  • 生产者组:一个生产者组可以有很多生产者,只需要在创建生产者的时候指定生产者组,那么这个生产者就在那个生产者组
  • 消费者:用来消费生产者消息的一方
  • 消费者组:跟生产者一样,每个消费者都有所在的消费者组,一个消费者组可以有很多的消费者,不同的消费者组消费消息是互不影响的。
  • topic(主题) :可以理解为一个消息的集合的名字,生产者在发送消息的时候需要指定发到哪个topic下,消费者消费消息的时候也需要知道自己消费的是哪些topic底下的消息。
  • Tag(子主题) :比topic低一级,可以用来区分同一topic下的不同业务类型的消息,发送消息的时候也需要指定。

工作流程

上面这张图很好的表示了RocketMQ的工作流程:

  • Broker启动的时候,会往每台NameServer(因为NameServer之间不通信,所以每台都得注册)注册自己的信息,这些信息包括自己的ip和端口号,自己这台Broker有哪些topic等信息。
  • Producer在启动之后会跟会NameServer建立连接,定期从NameServer中获取Broker的信息,当发送消息的时候,会根据消息需要发送到哪个topic去找对应的Broker地址,如果有的话,就向这台Broker发送请求;没有找到的话,就看根据是否允许自动创建topic来决定是否发送消息。
  • Broker在接收到Producer的消息之后,会将消息存起来,持久化,如果有从节点的话,也会主动同步给从节点,实现数据的备份
  • Consumer启动之后也会跟会NameServer建立连接,定期从NameServer中获取Broker和对应topic的信息,然后根据自己需要订阅的topic信息找到对应的Broker的地址,然后跟Broker建立连接,获取消息,进行消费。

根据以上工作流程可知,NamerServer会定期获取Broker的信息,并且Producer和Consumer在启动后都会和NameServer建立连接,因此在部署启动RocketMQ时需要先启动Name人Server,后启动Broker才可以。

环境搭建

        在简单介绍了RocketMQ的核心概念和工作流后,进入实际的部署环境。

        本文主要介绍使用Docker Compose进行安装,使用原始的拉取MQ包并进行解压缩运行的方法较为复杂,且原始的MQ配置中JVM的内存空间大小是8g,也需要修改对应的配置,因此不推荐该方法。而使用docker方式也可以,但需要分别拉取NameServer、Broker和DashBoa的镜像再运行,有点麻烦,不如Docker Compose通过编写Docker Compose.yaml配置文件进行运行来的方便快捷。

1. 准备

        在实际安装MQ之前,需要有一些前提准备工作(基础环境搭建):

  • 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
  • 安装好JDK,因为RockerMQ是使用Java编写的,且后续的RocketMQ的Web可视化管理页面DashBoard也是使用Spring写的,因此需要有Java运行环境。
//查看JDK版本(最好在1.8以上,因为1.8稳定)
java -version

  • 安装好了Docker及Docker-Compose

Docker和Docker-Compose的作用:

  • Docker:Docker 是一个容器化平台,专注于管理单个容器。每次您启动一个 Docker 容器时,都需要使用 docker run 命令手动指定所有容器的配置。
  • Docker Compose:Docker Compose 用于定义和运行多容器应用。它使得管理多个容器变得简单,通过编写 docker-compose.yml 文件来配置所有容器,然后用 docker-compose 命令来管理这些容器。
    //查询docker版本
    docker -v
    //查询docker-compose版本
    docker-compose -v

    • 创建好对应的文件:分别创建rocketmq文件夹,conf文件夹和broker.conf及docker-compose.yml配置文件。

    2. 修改具体配置文件

    • 修改broker.conf配置文件
    //进入对应的conf文件夹下
    cd /usr/local/rocketmq/conf
    //修改配置文件
    vim broker.conf

    broker配置文件如下:

    brokerClusterName = DefaultCluster

    brokerName = broker-a

    brokerId = 0

    deleteWhen = 04

    fileReservedTime = 48

    brokerRole = ASYNC_MASTER

    flushDiskType = ASYNC_FLUSH

    # 如果是本地程序调用云主机 mq,这个需要设置成 云主机 IP

    # 如果Docker环境需要设置成宿主机IP

    brokerIP1 = {docker宿主机IP地址}

    • 修改docker-compose.yaml配置文件
    //进入对应的conf文件夹下
    cd /usr/local/rocketmq/conf
    //修改配置文件
    vim docker-compose.yaml

    docker-compose.yaml配置文件如下:

    version: '3.5'
    services:
      namesrv:
        image: apache/rocketmq:5.2.0
        container_name: rmqnamesrv
        ports:
          - "9876:9876"
        command: sh mqnamesrv
        environment:
          - JAVA_OPT_EXT=-Xms128m -Xmx128m -Xmn128m
        networks:
            rmq:
              aliases:
                - rmqnamesrv

      broker:
        image: apache/rocketmq:5.2.0
        container_name: rmqbroker
        ports:
          - "10909:10909"
          - "10911:10911"
        depends_on:
          - namesrv
        volumes:
          - ./conf/broker.conf:/opt.rocketmq-5.2.0/conf/broker.conf
        command: sh mqbroker -c /opt.rocketmq-5.2.0/conf/broker.conf
        environment:
          NAMESRV_ADDR: "rmqnamesrv:9876"
          JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"
        networks:
          rmq:
            aliases:
              - rmqbroker

      mqconsole:
        image: apacherocketmq/rocketmq-dashboard
        container_name: rmqconsole
        ports:
          - 8080:8080
        depends_on:
          - namesrv
        environment:
            JAVA_OPTS: "-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false"
        networks:
          rmq:
            aliases:
              - rmqconsole

    networks:
      rmq:
        name: rmq
        driver: bridge

            这里简单说明一下这个配置文件的内容及作用:里面分别介绍了namesrv、broker和mqconsole镜像的名称、容器名称、环境、端口及网络配置等,根据该配置文件,可拉取对应的镜像并构建容器,command: sh mqbroker -c /opt.rocketmq-5.2.0/conf/broker.conf命令的作用是根据刚修改的broker.conf来运行。

    3. 运行docker-compose.yaml

            在完成以上内容后,就可以运行docker-compose.yaml,它会拉取对应的镜像并构建容器运行。如果拉取失败也可以自己把上面所需的三个镜像拉取下来,再运行该文件。

    //进入含有docker-compose.yaml的文件夹下
    cd /usr/local/rocketmq/conf
    //启动docker-compose
    docker-compose up
    //上面的命令为前台启动,可以直接看到启动过程和可能出现的错误
    docker-compose up -d
    //上面的命令为后台启动

    启动后的界面:

    当显示以上界面时说明启动成功,输入http://主机ip:8080后若能成功访问说明部署成功。

            如果MQ启动成功了,但是无法打开网页,有可能是服务器对应的安全组没有设置,记得把10909、10911、9876打开。

            以上就是MQ的所有部署安装教程啦,祝大家都能找到满意的offer~

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

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

    相关文章

    【JavaEE进阶】MyBatis入门

    目录 🌴前言 🌲什么是MyBatis? 🌳准备工作 🚩创建工程 🚩配置数据库连接字符串 🚩数据准备 🚩编写持久层代码 🍃单元测试 🌴前言 在应⽤分层学习时,我们了解到…

    Docker 镜像加速器配置指南

    Docker 镜像加速器配置指南 2025-02-17 23:00 Linux : Aliyun ECS 服务器 背景问题 在国内,由于网络环境的不稳定,直接从 Docker Hub 拉取镜像的速度可能会很慢,有时甚至会失败。即使配置了官方的阿里云镜像加速器,也可能因为…

    前端VUE+后端uwsgi 环境搭建

    1整体架构 请求流程the web clinet--the web server->the socket->uwsgi--django 第一级的nginx并不是必须的,uwsgi完全可以完成整个的和浏览器交互的流程;在nginx上加上安全性或其他的限制,可以达到保护程序的作用;uWSGI本…

    【Bert】自然语言(Language Model)入门之---Bert

    every blog every motto: Although the world is full of suffering, it is full also of the overcoming of it 0. 前言 对bert进行梳理 论文: BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 时间:…

    .NET版PDF处理控件Aspose.PDF教程:在 C# 中将 TIFF 文件转换为 PDF

    将TIFF文件转换为PDF文档在各个行业中都是必不可少的。许多企业需要将文档转换为存档、共享或打印。TIFF 文件通常用于图像,而 PDF 是文档共享的标准。将 TIFF 文件转换为 PDF 可确保跨不同平台的兼容性和易用性。在这篇博文中,我们将探讨如何使用 Aspos…

    解决华硕主板的Boot界面无法设置M.2的系统启动盘问题

    一、问题描述 当我们的华硕主板电脑开机后,发现电脑无法正常进入Windows系统界面,直接显示PXE网络网络信息;且知道我们进入到BIOS界面也无法找到选择系统盘,界面只显示【UEFI:PXE IP4 Intel(R) Ethernet】、【UEFI:PXE IP6 Intel(…

    【Arxiv 大模型最新进展】PEAR: 零额外推理开销,提升RAG性能!(★AI最前线★)

    【Arxiv 大模型最新进展】PEAR: 零额外推理开销,提升RAG性能!(★AI最前线★) 🌟 嗨,你好,我是 青松 ! 🌈 自小刺头深草里,而今渐觉出蓬蒿。 NLP Github 项目…

    Linux-C/C++《C/9、信号:基础》(基本概念、信号分类、信号传递等)

    本章将讨论信号,虽然信号的基本概念比较简单,但是其所涉及到的细节内容比较多,所以本章篇幅也会相对比较长。事实上,在很多应用程序当中,都会存在处理异步事件这种需求,而信号提供了一种处理异步事件的方法…

    【工具插件类教学】实现运行时2D物体交互的利器Runtime2DTransformInteractor

    目录 ​编辑 1. 插件核心功能 1.1 基础变换操作 1.2 高级特性 2. 安装与配置 2.1 导入插件 2.2 配置控制器参数 2.3 为物体添加交互功能 3. 使用示例 3.1 基础操作演示 3.2 多选与批量操作 3.3 自定义光标与外观 4. 高级配置技巧 4.1 动态调整包围框控件尺寸 4.…

    OpenCV形态学操作

    1.1. 形态学操作介绍 初识: 形态学操作是一种基于图像形状的处理方法,主要用于分析和处理图像中的几何结构。其核心是通过结构元素(卷积核)对图像进行扫描和操作,从而改变图像的形状和特征。例如: 腐蚀&…

    【Ubuntu】GPU显存被占用,但显示没有使用GPU的进程

    文章目录 一、问题描述二、解决方案2.1 寻找问题进程2.2 尝试杀死相关进程2.3 投放核弹,一键全杀2.4 再次查看GPU使用情况 参考资料 一、问题描述 今天使用服务器的时候发现gpu被占了很多内存,但是使用 nvidia-smi 命令并没有发现占这么多显存的进程&am…

    通义灵码AI程序员

    通义灵码是阿里云与通义实验室联合打造的智能编码辅助工具,基于通义大模型技术,为开发者提供多种编程辅助功能。它支持多种编程语言,包括 Java、Python、Go、TypeScript、JavaScript、C/C、PHP、C#、Ruby 等 200 多种编码语言。 通义灵码 AI…

    以ChatGPT为例解析大模型背后的技术

    目录 1、大模型分类 2、为什么自然语言处理可计算? 2.1、One-hot分类编码(传统词表示方法) 2.2、词向量 3、Transformer架构 3.1、何为注意力机制? 3.2、注意力机制在 Transformer 模型中有何意义? 3.3、位置编…

    Redis-缓存过期和内存淘汰

    缓存过期&&内存淘汰 过期删除如何设置过期时间判断key是否过期过期删除策略有哪些定时删除惰性删除定期删除Redis过期删除策略 内存淘汰策略如何设置Redis最大运行内存Redis内存淘汰策略有哪些不进行数据淘汰进行数据淘汰的策略设置了过期时间的数据中进行淘汰所有数据…

    七星棋牌全开源修复版源码解析:6端兼容,200种玩法全面支持

    本篇文章将详细讲解 七星棋牌修复版源码 的 技术架构、功能实现、二次开发思路、搭建教程 等内容,助您快速掌握该棋牌系统的开发技巧。 1. 七星棋牌源码概述 七星棋牌修复版源码是一款高度自由的 开源棋牌项目,该版本修复了原版中的多个 系统漏洞&#…

    第六届计算机信息和大数据应用国际学术会议(CIBDA 2025)

    重要信息 大会官网:www.ic-cibda.org(了解会议,投稿等) 大会时间:2025年3月14-16日 大会地点:中国-武汉 简介 第六届计算机信息和大数据应用(CIBDA 2025)将于2025年3月14-16日在中国…

    PyTorch 深度学习框架中 torch.cuda.empty_cache() 的妙用与注意事项

    🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 在使用 PyTorch 进行深度学习模型训练与调优过程中,torch.cuda.empty_cache() 方法作为一种高效工具被广泛采用;但其正确应用要求充分理解该方法的功能及最佳实践。下文将对该方…

    快速入门——Vue框架快速上手

    学习自哔哩哔哩上的“刘老师教编程”,具体学习的网站为:8.Vue框架快速上手_哔哩哔哩_bilibili,以下是看课后做的笔记,仅供参考。 第一节:前端环境准备 编码工具VSCode【www.code.visualstudio.com】/WebStorm也可&am…

    zookeeper集群配置

    配置 一、配置myid文件 # 进入解压好的文件夹下面 touch myid vim myid # master节点写0,slave1节点写1,slave2节点写2二、配置zoo.cfg文件 1.在master节点编辑zookeeper配置文件 # 进入解压好的文件夹下面 cd conf/ cp zoo_sample.cfg zoo.cfg vim …

    掌握.NET Core后端发布流程,如何部署后端应用?

    无论你是刚接触.NET Core的新手还是已有经验的开发者,在这篇文章中你将会学习到一系列实用的发布技巧与最佳实践,帮助你高效顺利地将.NET Core后端应用部署到生产环境中 目录 程序发布操作 Docker容器注册表 文件夹发布 导入配置文件 网站运行操作 …