RocketMQ概念、环境搭建
一、概述
RocketMQ是一款分布式、队列模型的消息中间件,具有以下特点:
A、能够保证严格的消息顺序;
B、提供丰富的消息拉取模式;
C、高效的订阅者水平扩展能力;
D、实时的消息订阅机制;
E、亿级消息堆积能力;
F、Metaq1.x和2.x,3.x下以后版本名,产品名称改为RocketMQ选用理由:
A、强调集群无单点,可扩展,任意一点高可用,水平可扩展;
B、海量消息堆积能力,消息堆积后,写入低延迟;
C、支持上万个队列;
D、消息失败重试机制;
E、消息可查询;
F、开源社区活跃;
G、成熟度(经过双十一考验);
二、专业术语
- Producer:消息生产者,负责生产消息,一般由业务系统负责产生消息;
Consumer:消息消费者,负责消费消息,一般是后台系统负责异步消费;
Push Consumer:Consumer的一种,应用通常向Consumer对象注册一个Listener接口,一旦受到消息,立刻回掉Listener接口方法;
Pull Consumer:Consumer的一种,应用通常主动调用Consumer的拉消息方法从Broker拉消息,主动权应用控制;
Producer Group:一类Producer的集合名称,这类Producer通常发送一类消息,且发送逻辑一致;
Consumer Group:一类Consumer的集合名称,这类Consumer通常消费一类消息,且消费逻辑一致;
Broker:消息中转角色,负责存储消息,转发消息,一般也成为Server,在JMS规范中称为Provider。
广播消费:一条消息被多个Consumer消费,计时这些Consumer属于同一个Consumer Group,消息也会被Consumer Group中的每个Consumer都消费一次,广播消费中的Consumer Group概念可以认为在消息划分方面无意义。
集群消费:一个Consumer Group中的Consumer实例平均分摊消费消息。
在JMS规范中,JMS point-to-point model与之类似,但是RocketMQ的集群消费功能大等于PTP模型。因为ROcket MQ单个Consumer Group内的消费者类似于PTP,但是一个Topic/Queue可以被多个Consumer Group消费。
顺序消息:消费消息的顺序要同发送消息的顺序一致,在RocketMQ中,主要指的是局部顺序,即一类消息为满足顺序性,必须Producer单线程顺序发送,且发送到同一个队列,这样Consumer就可以按照Producer发送的顺序去消费消息。
三、RocketMQ环境搭建
双/多master配置方式: 0、服务器环境:
1、命令:(每个master都要修改)vim /etc/hosts
IP:192.168.100.24 ;NAME:rocketmq-nameserver1
IP:192.168.100.24 ;NAME:rocketmq-master1
IP:192.168.100.25 ;NAME:rocketmq-nameserver2
2、命令:service network restart
3、命令:tar -zxvf alibaba-rocketmq-3.4.2.6.tar.gz -C /usr/local/
4、创建软连接,命令:ln -s alibaba-rocketmq-3.4.2.6 rocketmq
5、创建存储路劲,命令:mkdir /usr/local/rocketmq/store
命令:mkdir /usr/local/rocketmq/store/commitlog
命令:mkdir /usr/local/rocketmq/store/consumequeue
命令:mkdir /usr/local/rocketmq/store/index
6、修改RocketMQ配置文件,命令:vim /usr/local/rocketmq/conf/2m-noslave/broker-a.properties
内容如下:
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0表示Master,>0表示Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许Broker自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscritionGroup=true
#Broker对外服务的监听端口
listentPort=10911
#删除文件时间点,默认凌晨4点
deleteWhen=04
#文件保留时间,默认48小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30w条,根据业务情况调整
ConsumeQueue=300000
#destroyMapedFileIntervalFocibly=120000
#redeleteHangedFileInterval=120000
#检查物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq/store
#commitLog存储路径
storePathCommitLog=/usr/local/rocketmq/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq/store/index
#checkpoint文件存储路径
storeCheckpoint=/usr/local/rocketmq/store/checkpoint
#abort文件存储路径
abortFile=/usr/local/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#flushConsumeQueueLeastages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker的角色
#-ASYNC_MASTER以不复制Master
#-SYNC_mATER 同步双写Master
brokerRole=ASYNC_MASTER
#磁盘方式
#-ASYNC_FLUSH异步刷盘
#-SYNC_FLUSH同步刷盘 flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程数量
#sendMessagethreadPoolNums=128
#拉消息线程池数量
(重复上面内容修改操作)
vim /usr/local/rocketmq/conf/2m-noslave/broker-b.properties
7、修改日志配置文件【两台机器】,命令:mkdir -p /usr/local/rocketmq/logs
命令:cd/usr/local/rocketmq/conf && sed-i's#${usr.home}#/usr/local/rocketmq#g'*.xml
8、修改启动脚本参数【两台机器】vim /usr/local/rocketmq/bin/runbroker.sh
修改内容:
JAVA_OPT=”${JAVA_OPT} -server -Xmx1g -Xmn512m -XX:PermSize=128m
vim /usr/local/rocketmq/bin/runserver.sh
修改内容:
JAVA_OPT=”${JAVA_OPT} -server -Xmx1g -Xmn512m -XX:PermSize=128m
9、启动 NameServer【两天机器】,命令:cd/usr/local/rocket/bin
nohup sh mqnamesrv &
10、启动Broker Server A 【192.168.100.24】
命令:nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 &
命令:netstat -ntlp
命令:jps
命令:tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log
命令:tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log
11、启动BrokerServer B 【192.168.100.25】
命令:nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-b.properties >/dev/null 2>&1 &
命令:netstat -ntlp
命令:jps
命令:tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log
命令:tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log
12、解压Tomcat,命令:tar -zxvf apache-tomcat-7.029.tar.gz -C /usr/local
13、进入tomcat,命令:cd apache-tomcat-7.0.29/webapps/
,上传rocketmq-console控制台war包
14、命令:mikdir /usr/local/rocketmq-console
15、解压rocketmq-console.war到rocketmq-console文件夹中,命令:unzip rocketmq-console.war -d rocketmq-console
16、进入rocketmq-console中的web-inf的class文件,命令:cd rocketmq-console/
,命令:cd WEB-INF
,命令:cd class/
17、修改配置文件,命令:vim config.properties
配置完成,可以启动
18、启动tomcat,命令:/usr/local/apache-tomcat-7.0.29/bin/startup.sh
19|、查看启动结果,命令:jps
20、查看tomcat日志,命令:tail -f -n 500 /usr/local/apache-tomcat-7.0.29/logs/catalina.out
还没有评论,来说两句吧...