RocketMQ:Windows下开发环境搭建

考虑到大部分Java开发者还是习惯于在windows环境下开发,因此本篇讲解如何在windows环境下搭建一个单机开发环境。

一、准备工作

Windows必须先安装64bit的JDK1.8或以上版本。

从RockitMQ官网 http://rocketmq.apache.org/dowloading/releases/ 下载最新的release包。我这里下载的版本是v4.4.0

解压到本地目录。

目录结构

上图是rocketmq-all-4.4.0-bin-release.zip 包解压后的目录结构。bin目录下存放可运行的脚本。

二、RocketMQ基本结构

在动手开发之前,我们需要了解一下RocketMQ的基本结构。

RocketMQ基本结构

如上图所示,一个正常工作的RocketMQ包括四个部分。

  • NameServer :基于高可用设计产生的,用于服务发现和路由。正式应用时通常采用集群部署。
  • Broker:实现队列机制,负责消息存储和转发。正式应用时也采用集群部署。
  • Producer:消息生产者,生成消息并发送到RocketMQ中,生产者通常是我们自己实现的应用程序。
  • Consumer:消息消费者,从RocketMQ中接收消息并进行业务处理。这部分也通常是我们自己实现的。

这里并不打算深入讲解RocketMQ的架构和特性,因为我觉得,针对于初学者,太早地深入知识细节,会让人感到迷惘,学习起来吃力。为了避免浪费时间,以上的知识己经能满足本文后面要实践的内容。随着实践我们会慢慢加深对RocketMQ的理解,再回过头来一点点深入了解。

以上的知识都来源于RocketMQ官网的参考文档,需要更多细节的同学, 可以打开
http://rocketmq.apache.org/docs/quick-start/ 自行阅读。

三、Windows环境下启动最小应用

从上面的图可以了解到,RocketMQ自身分为 NameServerBroker 两个部分,因此,用作本机开发调试用的最小应用,应该分别启动一个NameServer和一个Broker节点。

RocketMQ默认提供了 windows环境 和 linux环境 下的启动脚本。脚本位于bin目录下,windows的脚本以.cmd为文件名后缀,linux环境的脚本以.sh为文件名后缀。

本篇操作细节部分只专注于讲windows环境下的脚本,linux环境下的脚本请直接参考官网原文。

不过,通常情况下,windows下的脚本双击启动时,都是窗口一闪而过,启动失败。下面的内容就帮大家解决这些问题。

第一步,配置 JAVA_HOMEROCKETMQ_HOME 环境变量

JAVA_HOME 的配置已经是老生常谈,这里不再赘述,不懂的话请自行百度。

ROCKETMQ_HOME 应指向解压后的Readme.md文件所在目录。

如上面的第一张图,我的 ROCKETMQ_HOME 应配置为 E:\rocketMq

第二步,启动 NameServer

NameServer的启动脚本是bin目录下的mqnamesrv.cmd

上文讲过,即使配置好了ROCKETMQ_HOME环境变量,mqnamesrv.cmd的启动通常也以失败告终。

阅读mqnamesrv.cmd脚本,发现其实际上是调用了runserver.cmd脚本来实现启动的动作。

而在runserver.cmd脚本,java的默认启动参数中,启动时堆内存的大小为2g,老旧一点的机器上根本没有这么多空闲内存。

因此,用编辑器修改一下runserver.cmd脚本。将原来的内存参数注释掉(cmd脚本使用rem关键字),修改为:

rem set "JAVA_OPT=%JAVA_OPT% -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
set "JAVA_OPT=%JAVA_OPT% -server -Xms256m -Xmx512m"

启动方式一:直接双击mqnamesrv.cmd脚本启动NameServer。

启动方式二:使用cmd命令启动,首先进入rocketMq的安装目录,再进入bin目录,执行‘start mqnamesrv.cmd’,启动NAMESERVER

NameServer启动显示

看到 The Name Server boot success 字样,表示NameServer己启动成功。

windows环境下,可以在目录%USERPROFILE%\logs\rocketmqlogs下找到NameServer的启动日志。文件名为namesrv.log

第三步,启动 Broker

Broker的启动脚本是mqbroker.cmd

mqnamesrv.cmd脚本类似,mqbroker.cmd是调用runbroker.cmd脚本启动Broker的。

同样的,优化一下runbroker.cmd的启动内存

rem set "JAVA_OPT=%JAVA_OPT% -server -Xms2g -Xmx2g -Xmn1g"
set "JAVA_OPT=%JAVA_OPT% -server -Xms256m -Xmx512m"

此外,Broker脚本启动之前要指定 NameServer的地址

NameServer默认启动端口是9876,这点可以从NameServer的启动日志中找到记录。

启动方式一:修改mqbroker.cmd脚本,增加NameServer的地址。

rem 添加此行,指定NameServer的地址
set "NAMESRV_ADDR=localhost:9876"

rem 在此行之前添加NameServer的地址
call "%ROCKETMQ_HOME%\bin\runbroker.cmd" org.apache.rocketmq.broker.BrokerStartup %*

双击mqbroker.cmd脚本启动Broker。

启动方式二:不 修改mqbroker.cmd脚本,直接使用cmd命令启动,首先跟启动NameServer一样先进入rocketmq安装目录的bin目录下面,然后执行‘start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true’启动broker

 

Broker启动成功

看到 The broker ... boot success 字样,表示Broker己启动成功,使用命令启动的界面没有内容显示

与NameServer类似,可以在目录%USERPROFILE%\logs\rocketmqlogs下找到Broker的启动日志。文件名为broker.log

四、验证RocketMQ功能

RocketMQ自带了恬送与接收消息的脚本tools.cmd,用来验证RocketMQ的功能是否正常。

tool.cmd脚本需要带参数执行,无法用简单的双击方式启动。因此,我们打开一个cmd窗口,并跳转到bin目录下。

打开cmd窗口并跳转到bin目录下

启动消费者

mqbroker.cmd脚本类似,启动tool.cmd命令之前我们要指定NameServer地址。

这里我们采用命令方式指定,并启动消费者。依次执行如下命令:

set NAMESRV_ADDR=127.0.0.1:9876
tools.cmd org.apache.rocketmq.example.quickstart.Consumer

启动消费者成功

启动生产者

再打开一个cmd窗口,依次执行如下命令:

set NAMESRV_ADDR=127.0.0.1:9876
tools.cmd org.apache.rocketmq.example.quickstart.Producer

生产者启动命令

启动成功后,生产者会发送1000个消息,然后自动退出。

生产者发送消息并退出

此时,在消费者界面按下Ctrl + C,就会收到刚刚生产者发出的消息。

消费者接收消息

至此,RocketMQ最小应用己经可以正常工作,能满足我们开发环境下调试代码的需求。

 

五、RocketMQ控制台

我们实际开发中不愿意总是去编写命令查询,管理,定位rocketmq的消息,我们希望rabbitmq一样的控制台直接打开消息。

下载rocketMq控制台源码:https://github.com/apache/rocketmq-externals.git

下载完后解压到本地电脑

可以看出控制台是使用springboot开发的,最终的控制台项目是 rocketmq-console,由于该项目端口号默认使用的是8080可能会冲突,我们需要修改端口号

进入rocketmq-console项目

找到项目的配置文件,将端口号修改为8088,并且知道rocketmq的nameserver路径为本机

修改保存后我们编辑改项目,使用cmd命令进入rocketmq-console项目,执行mvn clean package -Dmaven.test.skip=true 命令

编译打包成功后在rocketmq-console项目下面就会出现一个target文件夹,进入该文件夹 就会看到我们打包好的jar包

我们直接运行该jar包即可,使用cmd命令进入到该目录,然后执行命令 java -jar rocketmq-console-ng-1.0.0.jar 或者 mvn spring-boot:run 命令

使用浏览器输入 http://127.0.0.1:8088/  即可进入rocketmq控制台

我们看到的红色的就是消息总数,由于我们执行了 rocketmq自带的验证功能,发送了1000条消息

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值