RocketMQ源码 — 一、 quikstart
RocketMQ quikstart
- 获取源码
git clone https://github.com/alibaba/RocketMQ.git
- 编译打包
cd RocketMQ
bash install.sh
这是一个maven工程,官方给出了编译打包的脚本install.sh,主要就是
# mvn 编译打包
mvn -Dmaven.test.skip=true clean package install assembly:assembly -U
# 建立一个软连接(快捷方式)
ln -s target/alibaba-rocketmq-broker/alibaba-rocketmq devenv
- 生成idea工程文件
生成工程文件就可以使用IDE直接打开
mvn idea:idea
# 生clipse工程文件
mvn eclipse:eclipse
- 设置环境变量
# 上面创建了devenv软连接
cd devenv
# 将devenv目录作为ROCKETMQ_HOME,其实也可以作为jvm启动参数传入,broker和nameServer启动的时候需要这个目录参数,默认取的是jvm启动的时候rocketmq.home.dir的值
echo "ROCKETMQ_HOME=`pwd`" >> ~/.bash_profile
# 让上面的环境变量起作用
source ~/.bash_profile
- 启动nameServer和broker
启动NameServer
cd bin
chmod u+x mqnamesrv
bash mqnamesrv
如果启动成功显示
Listening for transport dt_socket at address: 9555
The Name Server boot success. serializeType=JSON
启动脚本mqnamesrv掉用的是runserver.sh,其实就是执行NamesrvStart这个类,这个类负责启动nameServer,然后在启动jvm的时候添加一堆参数,注意runserver.sh
- 启动jvm的时候注意jvm各个内存区域的大小(如果电脑内存较小,而且不是用在生产环境可以调小一些)
- 因为是jvm,可以打开远程调试端口把下一句话的注释去掉,就可以进行远程调试了
# 去掉下面这句话前面的#
JAVA_OPT="${JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"
启动broker
chmod u+x mqbroker
bash mqbroker -n localhost:9876
和nameServer启动类似mqbroker调用了runbroker.sh来启动jvm运行BrokerStart类,在里面添加各种参数,也可以通过去掉上面那句话来进行远程调试(注意远程调试端口不要和上面nameServer的冲突了)。
- 运行example
- 设置nameServer的地址到环境变量中,因为Producer和Consumer都需要知道nameServer的地址才能进一步获取broker的地址
# 设置到环境变量
export NAMESRV_ADDR=localhost:9876
# 在Producer和Consumer类中设置
producer.setNamesrvAddr("localhost:9876");
consumer.setNamesrvAddr("localhost:9876");
- 发送消息和接受消息
在IDE中打开这个工程(上面已经生成工程文件),然后直接运行Producer和Consumer两个类的main方法就可以了。
也可以通过提供的脚本运行
bash tools.sh com.alibaba.rocketmq.example.quickstart.Producer
bash tools.sh com.alibaba.rocketmq.example.quickstart.Consumer
模块划分
RocketMQ共包含9个模块
- rocketmq-common:通用的枚举、基类方法、或者数据结构,包名有admin、consumer、filter、hook、message
- rocketmq-remoting:使用netty的客户端、服务端,使用fastjson序列化,自定义二进制协议
- rocketmq-srvutil:只有一个ServerUtil类,只提供Server程序依赖,尽可能减少客户端依赖
- rocketmq-store:消息存储,索引,consumerLog,commitLog等
- rocketmq-client:消息发送和接收,包含consumer和producer
- rocketmq-filtersrv:消息过滤器
- rocketmq-broker:服务端,接受消息,存储消息,consumer拉取消息
- rocketmq-tools:命令行工具
- rocketmq-namesrv:NameServer,类似服务注册中心,broker在这里注册,consumer和producer在这里找到broker地址
RocketMQ源码 — 一、 quikstart的更多相关文章
- ROCKETMQ源码分析笔记1:tools
rocketmq源码解析笔记 大家好,先安利一下自己,本人男,35岁,已婚.目前就职于小资生活(北京),职位是开发总监. 姓名DaneBrown 好了.我保证本文绝不会太监!转载时请附上以上安利信息. ...
- RocketMQ源码 — 六、 RocketMQ高可用(1)
高可用究竟指的是什么?请参考:关于高可用的系统 RocketMQ做了以下的事情来保证系统的高可用 多master部署,防止单点故障 消息冗余(主从结构),防止消息丢失 故障恢复(本篇暂不讨论) 那么问 ...
- RocketMQ 源码学习笔记————Producer 是怎么将消息发送至 Broker 的?
目录 RocketMQ 源码学习笔记----Producer 是怎么将消息发送至 Broker 的? 前言 项目结构 rocketmq-client 模块 DefaultMQProducerTest ...
- RocketMQ 源码学习笔记 Producer 是怎么将消息发送至 Broker 的?
目录 RocketMQ 源码学习笔记 Producer 是怎么将消息发送至 Broker 的? 前言 项目结构 rocketmq-client 模块 DefaultMQProducerTest Roc ...
- RocketMQ 源码分析 —— Message 发送与接收
1.概述 Producer 发送消息.主要是同步发送消息源码,涉及到 异步/Oneway发送消息,事务消息会跳过. Broker 接收消息.(存储消息在<RocketMQ 源码分析 —— Mes ...
- RocketMQ源码分析之从官方示例窥探:RocketMQ事务消息实现基本思想
摘要: RocketMQ源码分析之从官方示例窥探RocketMQ事务消息实现基本思想. 在阅读本文前,若您对RocketMQ技术感兴趣,请加入RocketMQ技术交流群 RocketMQ4.3.0版本 ...
- 记一次RocketMQ源码导入IDEA过程
首先,下载源码,可以官网下载source包,也可以从GitHub上直接拉下来导入IDEA.如果是官网下载的source zip包,直接作为当前project的module导入,这里不赘述太多,只强调一 ...
- 【RocketMQ源码分析】深入消息存储(1)
最近在学习RocketMQ相关的东西,在学习之余沉淀几篇笔记. RocketMQ有很多值得关注的设计点,消息发送.消息消费.路由中心NameServer.消息过滤.消息存储.主从同步.事务消息等等. ...
- 【RocketMQ源码分析】深入消息存储(3)
前文回顾 CommitLog篇 --[RocketMQ源码分析]深入消息存储(1) ConsumeQueue篇 --[RocketMQ源码分析]深入消息存储(2) 前面两篇已经说过了消息如何存储到Co ...
- 【RocketMQ源码分析】深入消息存储(2)
前文回顾 CommitLog篇 --[RocketMQ源码分析]深入消息存储(1) MappedFile篇 --[RocketMQ源码分析]深入消息存储(3) 前文说完了一条消息如何被持久化到本地磁盘 ...
随机推荐
- 初探async await 实现多线程处理
初探async await 实现多线程处理 这是微软关于Async的介绍:http://msdn.microsoft.com/en-us/library/hh156513.aspx 这是await : ...
- DDD分层架构之领域实体(基础篇)
DDD分层架构之领域实体(基础篇) 上一篇,我介绍了自己在DDD分层架构方面的一些感想,本文开始介绍领域层的实体,代码主要参考自<领域驱动设计C#2008实现>,另外参考了网上找到的一些示 ...
- Scala从零开始:使用Intellij IDEA写hello world
Scala从零开始:使用Intellij IDEA写hello world 分类: Scala |2014-05-23 00:39 |860人阅读 引言 在之前的文章中,我们介绍了如何使用Scal ...
- 百度Web App在线生成平台Site App体验
最近收到百度开发者中心邮件,告知之前的百度移动建站服务已经升级为Site App了,Site App顾名思义是可以创建APP的站点,之前想建立一个APP要么是自己制作,要么是选用国外的在线Web A ...
- Visual Studio 编辑器
如何扩展 Visual Studio 编辑器 在 Visual Studio 2010 的时代,扩展 Visual Studio 的途径有很多,开发者可以选择宏.Add-in.MEF 和 VSPack ...
- greenlet微线程
Greenlet简介 一个 “greenlet” 是一个很小的独立微线程.可以把它想像成一个堆栈帧,栈底是初始调用,而栈顶是当前greenlet的暂停位置.你使用greenlet创建一堆这样的堆 栈, ...
- 2013.5.A
题1 高低位交换 [问题描述] 给出一个小于2^32的正整数.这个数可以用一个32位的二进制数表示(不足32位用0补足).我们称这个二进制数的前16位为“高位”,后16位为“低位”.将它的高低位交换, ...
- 活动图activity diagram
活动图activity diagram 系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类 ...
- 理解对象模型图(Reading OMDS)
理解对象模型图(Reading OMDS) 引言 这篇文章大部分内容是翻译的帮助资料里的东西.学习技术,英语是个好工具.一直把英语的地位看得和技术一样重,也会强迫自己看英语版的技术书籍(都是PDF版的 ...
- 企业架构研究总结(29)——TOGAF架构内容框架之概述及架构工作产品分类
在TOGAF 9之前的版本中,TOGAF的重点主要集中在企业架构开发方法方面,用于指导其使用者如何在各自的组织中对企业架构进行创建和维护,而对于企业架构的具体内容并没有相关的论述,因而针对早期TOGA ...