通过源码启动RocketMQ的Demo

一、RocketMQ简介

Apache RocketMQ 是一个分布式消息和流媒体平台,具有低延迟、高性能和可靠性、万亿级容量和灵活的可扩展性。它由四个部分组成:名称服务器、代理、生产者和消费者。它们中的每一个都可以水平扩展而没有单点故障。

二、RocketMQ架构

官网给出的RocketMQ架构如下:

RocketMQ架构

上图可以看出,RocketMQ分为四大模块

1)NameServer Cluster

提供轻量级服务发现和路由。每个Name Server记录完整的路由信息,提供相应的读写服务,支持快速存储扩展。

2)Broker Cluster

主要负责消息的存储、投递和查询以及服务高可用保证。Brokers 通过提供轻量级的 TOPIC 和 QUEUE 机制来处理消息存储。它们支持 Push 和 Pull 模型,包含容错机制(2 副本或 3 副本),并提供强大的峰值填充和按原始时间顺序累积数千亿消息的能力。此外,Brokers 提供了灾难恢复、丰富的指标统计和警报机制,这些都是传统消息传递系统所缺乏的。

3)Producer Cluster

充当消息发布的角色,支持分布式集群方式部署。producer通过MQ的负载均衡模块选择相应的Broker集群队列进行消息投递。投递的过程支持快速失败并且低延迟。

4)Consumer Cluster

充当消息消费者的角色,支持分布式集群方式部署。支持以push推,pull拉两种模式对消息进行消费。同时也支持集群方式和广播形式的消费,它提供实时消息订阅机制,可以满足大多数用户的需求。

三、RocketMQ源码启动

1)导入源码

下载RocketMQ4.9.0,git地址:https://github.com/apache/rocketmq

导入idea,代码结构如下

关注两个重点模块:rocketmq-namesrv以及rocketmq-broker

2)启动namesrv

namesrv提供轻量级服务发现和路由,记录完整的路由信息,实践源码时需要先启动namesrv模块。代码结构如下:

打开NamesrvStartup类文件,首先在createNamesrvController方法中指定RocketmqHome,然后启动main方法

至此,完成namesrv模块启动。

3)启动broker

broker主要负责消息的存储、投递和查询以及服务高可用保证。启动namesrv之后,再启动broker。代码结构如下:

打开BrokerStartup,需要设置brokerConfig的一些信息,然后再启动main方法。

至此,完成broker模块启动。

4)启动producer及consumer

进入example模块,打开quickstart文件夹

先打开Producer类,配置NamesvrAddr,启动Producer类

再打开Consumer类,同样配置NamesvrAddr,再启动Consumer类

producer和consumer需要制定同样的groupName以及topic

producer启动之后,观察consumer类控制台,可以发现能够接收producer信息。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容