今天从零开始学习RocketMQ,之前学习过JMS规范以及ActiveMQ相关知识,但总感受RocketMQ给我带来一种莫名的好感,加上公司目前也在使用RocketMQ,因此,颇有必要学习一波,乘年轻刚入职场,多学点、研究点技术,相信结局老是美好的。linux
本文很简单,就是基本的windows环境搭建,非集群版本。请不要问我为何不在linux上面进行搭建,首先我用不惯虚拟机,第二以前买的阿里云学生机过时了,贼难受。学会在windows上搭建RocketMQ服务以后,在linux上面搭建也是一样的步骤和道理的。本文最后还会放出小编在搭建过程当中犯过的错误以及解决方法,让你们能更快地进行服务搭建。apache
首先假设咱们已经对RocketMQ的相关架构有所了解,若是你尚未进行了解学习,能够先到官方网站或者找找博客进行学习。RocketMQ的启动流程主要有如下几个步骤:windows
一、启动命名服务NameServer
bash
二、Broker
的启动服务器
三、建立Provider
及Consumer
,模拟消息发送接收架构
四、关闭RocketMQ
服务器ide
NameServer
NameServer
的默认启动类为:org.apache.rocketmq.namesrv.NamesrvStartup
学习
Broker
的启动Broker
的默认启动类为:org.apache.rocketmq.broker.BrokerStartup
网站
Provider
及Consumer
,模拟消息发送接收生产消息:ui
消费消息:
RocketMQ
服务器先关闭Broker
,而后再关闭名称服务器。
ROCKETMQ_HOME
,不然报错.那么为何会出现这样的错误呢?很简单,你打开mqnamesrv.cmd
文件就知道了,里边有这么一段代码:
if not exist "%ROCKETMQ_HOME%\bin\runserver.cmd" echo Please set the ROCKETMQ_HOME variable in your environment! & EXIT /B 1
复制代码
若是不存在该环境变量就执行echo
语句。
也就是说你下载完rocketmq压缩包以后,解压路径不能出现相似下面的状况:
e://Program File/rocketmq
出现空格,会报“找不到主类”的错误
搭建rocketmq环境比想象中要简单,过程当中也踩了两个坑,在这里分享一个解决启动问题的思路,那就是若是你实在找不出问题该如何解决,那么你能够尝试打开cmd
文件,查看源代码,看看到底启动的逻辑,问题会清晰不少。
上面也指出了namesrv
和broker
的相关启动类,全部的启动过程都在源码的main()
方法中,能够进去一探究竟~~