RocketMQ单机版安装

598 阅读3分钟

「这是我参与11月更文挑战的第25天,活动详情查看:2021最后一次更文挑战

在MQ中现在最常用的MQ分为三种:RabbitMQ,RocketMQ,Kafka,这这篇中主要介绍下RocketMQ单机版本的安装,帮助小白快速入门,能够快速的初始RocketMQ。 为了快速的入门学习RocketMQ,可以在虚拟机上面安装一个单机版的RocketMQ用于学习及入门使用,在接下来的步骤记录下我自己安装的操作,方便以后自己查看。单机版MQ在生产环境是禁止使用,RocketMQ支持集群安装,线上都采用集群安装模式。 在安装之前先对MQ的几个组件简单的描述:

  • NameServer:类似ZK,提供注册服务中心,为Broker提供轻量级的路由注册服务
  • Broker: 核心组件,实际负责消息的处理,存储,转发等服务
  • Produer:业务系统维护,负责MQ消息的发送(生产者)
  • Consumer:业务系统维护,负责MQ消息的消费(消费者)

在安装的时候,只需要安装NameServer及Broker,先启动NameServer后启动Broker。

环境准备

  • Centos 7 虚拟机一台
  • JDK 1.8 环境安装
  • RocketMQ安装包release包

下载地址:rocketmq.apache.org/docs/quick-…

  • RocketMQ界面控制台

由于官方未提供控制台,开源社区有一套控制台界面 gitcode.net/mirrors/apa…

RocketMQ安装

  • 将rocketmq-all-4.9.2-bin-release.zip解压并移动到:/usr/local/rocketmq 目录下,然后进入/usr/local/rocketmq 目录中启动

image.png

启动NameServer

启动NameServer比较简单,直接启动ROCKETMQHOME/bin目录下的mqnamesrv,就可以启动NameServer服务,但是我们是在虚拟机上面启动,RocketMQ启动NameServer的时候配置文件默认内存时4G,就需要将JVM的内存调小,不然无法启动。修改ROCKETMQ_HOME/bin目录下的mqnamesrv,就可以启动NameServer服务,但是我们是在虚拟机上面启动,RocketMQ启动NameServer的时候配置文件默认内存时4G,就需要将JVM的内存调小,不然无法启动。 修改 ROCKETMQ_HOME/bin/runserver.sh 文件中JAVA_OPT参数

JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

image.png

启动命令:

cd /usr/local/rocketmq
nohup bin/mqnamesrv &

启动日志会打印到当前文件夹下的nohup.out 中

启动Broker

Broker的启动步骤跟NameServer一样,需要启动ROCKETMQHOME/bin目录下的mqbroker,在虚拟机安装的时候,也需要将Jvm的内存改小,Broker默认的内存大小是8G。修改ROCKETMQ_HOME/bin目录下的mqbroker,在虚拟机安装的时候,也需要将Jvm的内存改小,Broker默认的内存大小是8G。 修改 ROCKETMQ_HOME/bin/runbroker.sh 文件中JAVA_OPT参数

JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmx512m -Xmn256m"

image.png 启动命令:

在启动的时候,需要指定启动配置文件,不然配置的参数不生效:broker.conf

cd /usr/local/rocketmq
nohup bin/mqbroker -c conf/broker.conf  &  
  • 安装控制台

由于控制台下载的是源码,则需要采用maven 命令打包成jar

mvn clean package -Dmaven.test.skip=true

将打包好的rocketmq-console-ng-1.0.0.jar上传到服务器,/usr/local/rocketmq下,然后启动:

cd /usr/local/rocketmq
nohup  java -jar rocketmq-console-ng-1.0.1.jar &

启动成功后,访问虚拟机的IP:8080 就可访问 image.png如果下载的源码,没有在配置文件中(rocketmq.config.namesrvAddr)指定NameServer的地址,则需要在虚拟机的环境中配置NameServer的地址

#if this value is empty,use env value rocketmq.config.namesrvAddr NAMESRV_ADDR | now, you can set it in ops page.default localhost:9876 rocketmq.config.namesrvAddr=

在这里,就在虚拟机的环境中配置NAMESRV_ADDR 地址,在/etc/profile文件后面追加下面的参数,然后使配置文件生效

#rocketmq 
export NAMESRV_ADDR=localhost:9876

source /etc/profile

重启rocketmq-console-ng 即可

服务验证

查看端口使用启动

netstat -ntlp |grep java

image.png

可以看到启动了一堆端口

  • 9876:NameServer启动的端口,用于注册地址
  • 8080:控制台启动端口,用于界面访问
  • 10909/10911/10912:Broker内部通信端口

使用生产者工具发送消息

由于RocketMQ的配置不允许使用的时候创建Topic,则需要在$ROCKETMQ_HOME/conf/broker.conf 尾部增加配置,允许自动创建Topic

autoCreateTopicEnable=true

image.png

使用bin/tools.sh 发送消息,默认发送1000条消息

cd /usr/local/rocketmq/
bin/tools.sh org.apache.rocketmq.example.quickstart.Producer 

image.png

使用消费者工具接收消息

使用bin/tools.sh 接收消息

cd /usr/local/rocketmq/
bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

image.png

到这里单机版的RocketMQ安装完成

关闭RocketMQ服务

关闭NameServer

cd /usr/local/rocketmq/
sh bin/mqshutdown namesrv 

关闭Broker

cd /usr/local/rocketmq/
sh bin/mqshutdown broker

关闭控制台

找到8080端口的pid,使用kill -9 杀死

 netstat -ntlp |grep 8080
 kill -9 1836
 

image.png