首页 > 编程语言 >【RocketMQ】源码以及环境搭建

【RocketMQ】源码以及环境搭建

时间:2024-10-26 09:10:07浏览次数:5  
标签:Broker 如下 Topic 源码 消息 RocketMQ 搭建

1  前言

本节我们开始看一下 RocketMQ 相关的东西,我们主要看一条链路,大致如下:

(1)环境的搭建,源码的下载

(2)消息的结构以及相关类可能也会看下消息的存储

(3)消息的生产以及发送过程

(4)消息的消费过程

大概看着四方面的内容,本节主要看下源码的下载以及环境的搭建。

在看之前,我们顺便回顾一下 RocketMQ 有几个核心组件,要有个基本的认识:

(1)NameServer:是 RocketMQ 集群中的注册中心,它负责维护集群中所有生产者、消费者以及 Broker 的信息。它并不存储任何消息数据,而是维护着集群中各种组件之间的关系。

(2)Broker:Broker 是 RocketMQ 中实际存储消息的节点,它负责接收生产者发送的消息,并提供给消费者消费。Broker 可以组成集群,并且支持水平扩展,即可以通过增加 Broker 实例来提高系统的吞吐量。每个 Broker 可以包含多个 Topic,每个 Topic 又可以分为多个队列(Queue)。

(3)Producer:生产者是向 Broker 发送消息的应用程序或服务。生产者将消息发送到指定的 Topic 上,可以使用同步或异步的方式进行发送。

(4)Consumer:消费者是从 Broker 获取消息的应用程序或服务。消费者可以订阅一个或多个 Topic,并从 Broker 中拉取消息。RocketMQ 支持两种消费模式:Pull 模式(消费者主动从 Broker 拉取消息)和 Push 模式(Broker 将消息推送给消费者)。

(5)Topic:Topic 是消息的逻辑分类,生产者将消息发送到特定的 Topic,而消费者则订阅这些 Topic。每个 Topic 都由一个或多个队列组成,以支持消息的并行处理。

(6)Message Queue:Message Queue 是存储在 Broker 上的物理队列,它是消息存储的基本单位。一个 Topic 可以有多个 Message Queue,消费者通过均衡算法选择不同的队列进行消费。默认1个Topic会在1个broker上创建4个队列。

参考:源码以及可视化界面下载地址

另外关于 Linux 搭建 MQ 的话可以参考:【Centos】Centos 7.6 安装 RocketMQ 5.1

推荐书籍:《RocketMQ技术内幕》,一门技术必看一本书

2  环境准备

2.1  源码下载

上边的地址直接打开,下载如下:


下载完,然后下载依赖,最后效果如下:

我们这里顺便看一下核心目录都是干什么的:

(1)broker: broker 模块(broker 启动进程)。

(2)client :消息客户端,包含消息生产者、消息消费者相关类。

(3)common:公共包。

(4)dev :开发者信息(非源代码)。

(5)distribution :部署实例文件夹(非源代码)。

(6)example: RocketMQ 示例代码。

(7)filter :消息过滤相关基础类。

(8)filtersrv : 消息过滤服务器实现相关类(Filter 启动进程)。

(9)logappender:日志实现相关类。

(10)namesrv: N ameServer 实现相关类(Names巳rver 启动进程)。

(11)openmessaging : 消息开放标准,正在制定中。

(12)emoting : 远程通信模块,基于 Netty。

(13)srvutil :服务器工具类。

(14)store :消息存储实现相关类。

(15)style: checkstyle 相关实现。

(16)test : 测试相关类。

(17)tools : 工具类,监控命令相关实现类。

2.2 本地 MQ 搭建

我们先下载一下二进制包,如下:

解压后如下:

然后我们开始启动(当然你本地要有 Java环境哈):

(1)首先启动 namesrv:

start mqnamesrv.cmd

启动如果环境变量未配置的话如下:

可以添加一下环境变量如下:

启动 namesrv 的效果如下:

!!!窗口不要关噢。

(2)启动 broker:

start mqbroker.cmd -n 0.0.0.0:9876 

到这里,MQ算是启动完了,我们再看下可视化界面。

2.3  可视化界面

首先下载可视化源码包如下:

解压完编译后如下:

启动后效果:

 

2.3  环境验证

我们这里发送一条消息,试一下:

public class RocketMQProducerTest {

    @SneakyThrows
    public static void main(String[] args) {
        TransactionMQProducer producer = new TransactionMQProducer("TopicTest");
        producer.setNamesrvAddr("0.0.0.0:9876");
        producer.start();

        // 创建一个消息实例
        Message msg = new Message(
                "TopicTest", // topic
                "TagA",      // tag
                "OrderID18", // key
                "Hello RocketMQ".getBytes(RemotingHelper.DEFAULT_CHARSET)); // body

        // 发送消息
        SendResult sendResult = producer.send(msg);
        System.out.printf("%s%n", sendResult);

        producer.shutdown();

    }

}

效果如下:

 行,没啥问题。

3  小结

本节我们主要准备下源码环境,简单体验一下 MQ 的启动过程,下节我们继续,有理解不对的地方欢迎指正哈。

标签:Broker,如下,Topic,源码,消息,RocketMQ,搭建
From: https://www.cnblogs.com/kukuxjx/p/18503615

相关文章

  • 短视频app开发源码,骨架屏技术优化前端体验
    一、什么是骨架屏?骨架屏是一种在短视频app开发源码页面加载过程中,以占位符形式展示页面结构的技术。它通过显示简单的灰色块和线条,让用户在等待内容加载时获得视觉反馈,提高了用户的满意度。二、为什么需要骨架屏?在移动设备和慢速网络环境下,短视频app开发源码的页面加载速度变得......
  • React项目搭建
    1.环境准备确保你的计算机上已安装以下工具:Node.js:React需要Node.js来运行和管理依赖。你可以从Node.js官网下载并安装最新版本。npm:Node.js安装后会自带npm(NodePackageManager),用于管理项目依赖。2.创建项目使用CreateReactApp是快速创建React应用的推荐方式。打开终......
  • dremio 25.2 软件包以及github 源码更新了
    昨天我说了dremio发布了25.2提供了新的catalog支持,之后过了一段时间dremio同时也提供了软件包以及github源码的更新说明25.1版本构建关于dremio-js的私服问题在这次代码中也看到解决了,新功能代码可以看看参考资料https://github.com/dremio/dremio-oss/blob/master/ui/......
  • [java毕业设计]免费分享一套SpringBoot+Vue宠物商城网站系统【论文+源码+SQL脚本】,帅
    大家好,我是java1234_小锋老师,看到一个不错的SpringBoot++Vue宠物商城网站系统,分享下哈。项目视频演示【免费】SpringBoot+Vue宠物商城网站系统Java毕业设计_哔哩哔哩_bilibili项目介绍本论文旨在设计与实现一个基于SpringBoot和Vue.js的宠物商城网站系统。随着互联网技......
  • 基于SpringBoot+Vue的药店管理系统设计与实现毕设(文档+源码)
            目录一、项目介绍二、开发环境三、功能介绍四、核心代码五、效果图六、源码获取:        大家好呀,我是一个混迹在java圈的码农。今天要和大家分享的是一款基于SpringBoot+Vue的药店管理系统,项目源码请点击文章末尾联系我哦~目前有各类成品毕......
  • 基于SpringBoot+Vue的校园二手书交易平台管理系统设计与实现毕设(文档+源码)
           目录一、项目介绍二、开发环境三、功能介绍四、核心代码五、效果图六、源码获取:        大家好呀,我是一个混迹在java圈的码农。今天要和大家分享的是一款基于SpringBoot+Vue的校园二手书交易平台管理系统,项目源码请点击文章末尾联系我哦~目前有......
  • 基于SpringBoot的学生社团管理系统【附源码】
    ​基于SpringBoot的学生社团管理系统(源码+L文+说明文档)     目录4系统设计  4.1界面设计原则  4.2功能模块设计  4.3数据库设计  4.3.1数据库E-R图  4.3.2数据库表结构  5 系统实现   5.1 管理员功能实现  5.1.1 团长管理  5.1.2......
  • 基于ssm框架的博客系统【附源码】
    基于ssm框架的博客系统(源码+L文+说明文档)   目录4系统设计  4.1系统概述  5系统的实现5.1功能模块的实现5.2博客信息管理  5.3博客类型管理  5.4公告信息管理  4系统设计  4.1系统概述  本文通过B/S结构(Browser/Server,浏览器/服务器结......
  • 基于SSM的学生管理系统【附源码】
    基于SSM的学生管理系统(源码+L文+说明文档)    目录4系统设计  4.1系统概述  4.2系统结构设计  4.3系统顺序图设计  4.3.1登录模块顺序图  4.3.2添加信息模块顺序图  4.4数据库设计  4.4.1数据库E-R图设计  图4-4管理员信息实体图  4.3.2数......
  • Springboot+vue图书商城购物系统【附源码】
    Springboot+vue图书商城购物系统(源码+L文+说明文档)  目录 四系统设计  4.1系统概述 4.2系统层次架构  4.3系统功能详情设计  4.4主流程描述  五、系统实现  5.1用户登录:  5.2用户注册  5.3前端首页   5.4管理员首页  5.5书籍分类管理......