RocketMQ爬坑记(一):安装使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chapterchou/article/details/84027921

1. RocketMQ简介

RocketMQ作为一款纯java、分布式、队列模型的开源消息中间件(阿里的说法是不遵循任何规范的,所以不能完全用JMS的那一套东西来看它),经历了淘宝双十一的洗礼,在功能和性能上据说是远超ActiveMQ。

RocketMQ简介,其中对rocketMQ的历史及特性做了简要的介绍。

这里再分享下,阿里中间技术团队官方博客,其中主要描述的都是概念性的东西,可以帮你更加深入了解RocketMQ的架构以及使用原理。

本文更多的偏向应用方面,描述的是笔者在使用RocketMQ遇到的一些问题。

接下来,开始聊聊RocketMQ的安装过程;参考RocketMQ官方文档

2. RocketMQ安装

2.1 Linux下安装

2.1.1 安装条件

  • 64位JDK 1.8+;
  • Maven 3.2.x;
  • Git(这里不必须,主要运来获取RocketMQ的压缩包)

2.1.2 发布下载和构建

单击此处下载4.3.0源代码版本。您也可以从这里下载二进制版本。

现在执行以下命令来解压缩4.3.0源代码版本并构建二进制工件。

  > unzip rocketmq-all-4.3.0-source-release.zip
  > cd rocketmq-all-4.3.0/
  > mvn -Prelease-all -DskipTests clean install -U
  > cd distribution/target/apache-rocketmq

解压完成之后:apache-rocketmq 目录的结构如下:

rocketmq目录结构

主要关注的是bin目录下存放的是启动、停止等一些脚本,conf目录存放配置文件等信息;

对于nameserver和broker日志位置都可以手动配置,具体配置文件就是conf下的logback_broker.xml和logback_namesrv.xml;

这里在conf目录下新增 broker-a.properties文件

文件内容如下:

#Broker所属哪个集群,默认【DefaultCluster】
terName=DefaultCluster
#本机主机名,需要唯一
brokerName=broker-a
#BrokerId,必须是大等于0的整数,0表示Master,>0表示Slave,一个Master可以挂多个Slave,Master与Slave通过BrokerName来配对,默认【0】
brokerId=0
#删除文件时间点,默认凌晨4点
deleteWhen=04
#文件保留时间,默认48小时
fileReservedTime=48
#Broker的角色 - ASYNC_MASTER 异步复制Master - SYNC_MASTER 同步双写Master - SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式 - ASYNC_FLUSH 异步刷盘 - SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#Name Server地址 如果是集群方式以;隔开
namesrvAddr=hadoop03:9876
storePathRootDir=/apps/rocketmq/alibaba-rocketmq/store
storePathCommitLog=/apps/rocketmq/alibaba-rocketmq/store/commitlog
#是否允许Broker自动创建Topic,建议线下开启,线上关闭,默认【true】
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
#Broker对外服务的监听端口,默认【10911】
#listenPort=10911

这里的部署主要采用单机部署;更多的集群部署方式见 双写模式部署RocketMQ.

2.1.3 启动namesrv和broker

接下来启动namesrv和broker;

启动namesrv:

  > nohup sh bin/mqnamesrv &
  > tail -f ~/logs/rocketmqlogs/namesrv.log
  The Name Server boot success...

当出现,The Name Server boot success... 时代表启动namesrv成功;

启动broker:

  > nohup sh mqbroker -c ../conf/broker-a.properties &
  > tail -f ~/logs/rocketmqlogs/broker.log 
  The broker[%s, 172.30.30.233:10911] boot success...

当出现,The broker[%s, 172.30.30.233:10911] boot success... 代表启动broker成功.

此时可以用jps查询进程:

运行状态

2.1.4 关闭namesrv和broker

> sh bin/mqshutdown broker
The mqbroker(36695) is running...
Send shutdown request to mqbroker(36695) OK

> sh bin/mqshutdown namesrv
The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK

坑1:启动了namesrv,但死活启动不了broker.

这个时候用守护进程启动broker,也没有日志,所以此时不要用守护进程启动,直接 ./mqbroker 此时就能看到错误信息,提示你内存大小不足;

在网上找了下原因,才发现坑爹的RocketMQ初始化要求可用内存必须4~8G左右,而我的机器没有那么大的内存。

解决方法:

修改bin 目录下 runserver.shrunbroker.sh 两个文件,修改其中内容如下:

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn125m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

主要是修改适合你机器的内存大小;

坑2:brokerIP1配置问题

强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别;但多网卡时IP可能读取错误;

broker自动寻的地址是172.17.0.1,而且深深的刻在了默认配置文件里,虽然我关掉了这个网络,配置文件里还是这个地址,然后我重新写了个配置文件,强制指定broker所在的机器ip为192.168.x.x,重启服务,就大功告成了!

2.2 Windows下安装

参照RocketMQ在Windows平台下环境搭建

安装下载构建和Linux下一致;得到构建后的apache-rocketmq.

进入bin目录下,执行

start mqnamesrv.cmd (弹出的框不要关闭)

start mqbroker.cmd -n 127.0.0.1:9876 (弹出的框不要关闭)

至此就启动完了;

2.3 安装MQ监控平台

2.3.1 下载

github地址,从github上下载源码;

进入到rocketmq-console/src/main/resources目录下,修改application.properties文件

server.contextPath=
server.port=8080
#spring.application.index=true
spring.application.name=rocketmq-console
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
logging.config=classpath:logback.xml
#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=
#if you use rocketmq version < 3.5.8, rocketmq.config.isVIPChannel should be false.default true
rocketmq.config.isVIPChannel=
#rocketmq-console's data path:dashboard/monitor
rocketmq.config.dataPath=/tmp/rocketmq-console/data
#set it false if you don't want use dashboard.default true
rocketmq.config.enableDashBoardCollect=true

主要是配置rocketmq.config.namesrvAddr 地址 ,如果不配置,则默认是localhost:9876

2.3.2 编译

进入到rocketmq-console(pom文件所在目录)下执行

mvn clean package -Dmaven.test.skip=true

注意:不要直接使用mvn package,会提示很多错误

执行完毕后在target目录下会生成一个jar包,执行jar包

java -jar XXX.jar

在浏览器访问:ip:端口(配置的端口),即可。如图:

控制台

猜你喜欢

转载自blog.csdn.net/chapterchou/article/details/84027921