rocketmq 有哪些监控工具_搭建阅读RocketMQ源码的环境

@Java讲坛杨工


RocketMQ是阿里巴巴的一种开源的分布式消息中间件。其高可靠、高可用、高并发、低延迟的特性,近年来被越来越多的企业使用。

RocketMQ的哪些特点吸引大量开发人员阅读其源码

  • 其开发语言是Java,降低了Java开发人员阅读的门槛;
  • 相比市面上其它的消息中间件,其经历过多次阿里巴巴双十一这种巨型工程的洗礼,能够生存下来,这一点就特别吸引大家想一探究竟,到底是什么样的设计逻辑造就了这么高大上的作品的。

有必要通读源码吗

如果对自己有更高的要求,那必须真正的去阅读源码,深入缕清其内部代码逻辑与设计思路。机会总是留给有准备的人,企业需要的正是具有某方面技能的专家。所以通读源码,也是给自己镀金,延长职场生涯、提高行业竞争力的方式。

RocketMQ必须要掌握的4个角色

RocketMQ的整体架构中,这四个角色NameServerBrokerProducerConsumer占据重要地位。它们之间的联系如下:

679ee1a3299a11cb715940f531659d1b.png
  • NameServer:服务注册中心。主要包含两个功能:一个是Broker管理,NameServer接收来自Broker集群的注册信息并提供心跳来检它们是否可用;另一个是路由管理,每一个NameServer都持有关于Broker集群和队列的全部路由信息,提供给Producer和Consumer查询。
  • Broker:消息服务器,负责接收并存储来自Producer产生的消息,然后让Consumer来消费存储起来的消息,并会把自己的topic配置信息实时同步到NameServer上。
  • Producer:生产者,负责产生消息。Producer通过NameServer获取所有Broker的路由信息,根据topic找到对应的Broker,然后向Broker发送消息。
  • Consumer:消费者,负责消费消息。Consumer通过NameServer获取所有Broker的路由信息,根据topic找到对应的Broker,然后从Broker消费消息。

从GitHub下载RocketMQ源码到IEDA中

ff59c3498ac488d322a30492b398912c.png
fdd0403bf1867502c35ab1ffc2734121.png

最后下载到IEDA中的项目结构如下图所示:

db1785a16319e12953d56f27599a53ec.png

源码目录说明:

  • acl:存放访问控制,包含用户、资源、权限、角色等信息。
  • broker:存放消息服务器模块。
  • client:消息客户端,消息生产者和消费者相关的类就在此包下。
  • common:存放所有模块用到的公共工具包。
  • dev:存放开发者信息。
  • distribution:部署实例文件夹。
  • docs:存放各个模块的文档和流程说明书。
  • example:存放示例代码的包。
  • filter:存放消息过滤相关类的包。
  • logappender:存放日志实现相关类的包。
  • namesrv:存放服务注册中心相关的类。
  • openmessaging:存放消息开放的标准。
  • remoting:存放远程通信模块,基于Netty。
  • srvutil:存放服务器工具类。
  • store:存放消息存储实现的相关类。
  • style:存放checkstyle相关实现。
  • test:存放测试相关的类。
  • tools:存放工具类、监控命令相关的实现类。

用Rocket的四大主要角色模拟消息的生产与消费

1、首先设置NameServer模块

  • 设置启动方式
9346579229322e310c5c6c1031ec12ab.png
  • 新建目录rocketmq-file,然后在目录下再新建conf、logs、store
d26f26ee718059fec94784d0cd6bb12d.png
3af05fb2dccf9dea981dfe501b55df67.png
  • 再把项目的子模块distribution下的broker.conf、logback_broker.xml、logback_namesrv.xml复制到上面新建的conf目录下
1cae3206b8d527f62c92a2936d81c4fa.png
  • 编辑broker.conf,添加如下内容:
# 存储路径storePathRootDir=E:mallocketmq-filestore# commitlog存储路径storePathCommitLog=E:mallocketmq-filestorecommitlog# 消费队列存储路径storePathConsumeQueue=E:mallocketmq-filestorecomsumequeue# 消息索引存储位置storePathIndex=E:mallocketmq-filestoreindex# checkpoint文件存储位置storeCheckPoint=E:mallocketmq-filestorecheckpoint# abort文件存储位置abortFile=E:mallocketmq-filestoreabortnamesrvAddr=127.0.0.1:9876
  • 编辑logback_broker.xml和logback_namesrv.xml,把自定义的日志输出目录添加进去
b0003e47466dfde6f9b3ca39aed968fd.png
  • 此时,启动NameServer就能成功。
8852a39dc20de360f03bd986d3ff60b4.png

2、跟设置NameServer一样,设置Broker模块信息如图所示:

a7a139ea5afa5e74c6dc692c410b1e0d.png

然后启动Broker模块

078b4dbf1b8ec15a91a6148e121dc6c8.png

3、使用RocketMQ源码提供的消息生产者Producer和消费者Consumer案例代码

打开消息生产者Producer.java类,添加设置NameServer服务器地址的代码:

producer.setNamesrvAddr("127.0.0.1:9876");
01b8f806e200d755141673b28966c8bf.png

打开消息消费者Consumer.java类,添加设置NameServer服务器地址的代码:

consumer.setNamesrvAddr("127.0.0.1:9876");
af9a1ae17afd061fe23e2585d75c3279.png

分别启动Producer.java和Consumer.java类中的main方法,在控制台就能够看见消息的产生和消费结果,都是OK的。

9fdbab0e12778ad9bcb2babc22c85eda.png

产生消息

dbe43455a9c7e40d2c6205692257f838.png

消费消息

到此,RocketMQ消息中间件的初步环境已搭建好。下章开始分析源码。


作者:杨工,北京互联网公司在职Java开发,专注分享写作干货。欢迎关注我,期待你的点赞评论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值