rocketmq:是一个开源的分布式消息传递和流数据平台。
废话我就不多说了,相信很多人也不喜欢废话。我就一边搭建一边讲解。
一、环境准备
1. linux操作系统64位。(推荐使用centos7)
2. 64位JDK,版本1.8+。
3. 重要环境:内存:4G+ 磁盘,最好是可以扩展的逻辑卷。
4. 源码安装需要的环境:Maven 3.2.x; (此处不适合刚学习的朋友,建议更我一样用二进制安装。)
二进制安装解决前三个依赖。
1.1 操作系统
$ cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
1.2 JDK
两台都要操作
$ wget https://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/jdk-8u201-linux-x64.tar.gz?AuthParam=1555164688_18e12e54589c1045f5c28878ed6ae9a4
$ mv jdk-8u201-linux-x64.tar.gz\?AuthParam\=1555164688_18e12e54589c1045f5c28878ed6ae9a4 jdk-8u201-linux-x64.tar.gz
$ tar -xvf jdk-8u201-linux-x64.tar.gz ~/bin/
$ ln -s ~/bin/jdk1.8.0_201 ~/bin/jdk
$ echo 'export $JAVA_HOME=$HOME/bin/jdk' >> ~/.bashrc
$ echo 'export $JRE_HOME=$JAVA_HOME/jre' >> ~/.bashrc
$ echo 'export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin' >> ~/.bashrc
$ source ~/.bashrc
$ java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
1.3 其他,如果是自己搭建测试的话可以根据自己的电脑配置给出对应的配置。
$ ifconfig | head -2 | grep inet | awk '{print $2}'
192.168.92.72
# 另外一台
$ ifconfig | head -2 | grep inet | awk '{print $2}'
192.168.92.73
二、安装rocketmq
2.1 安装rocketmq
$ mkdir ~/package
$ cd ~/package/
$ wget http://mirror.rise.ph/apache/rocketmq/4.5.0/rocketmq-all-4.5.0-bin-release.zip
$ mkdir ~/soft
$ unzip rocketmq-all-4.5.0-bin-release.zip -d ~/soft/
$ cd ~/soft/
$ mv rocketmq-all-4.5.0-bin-release rocketmq
2.2 启动namerc
$ ./bin/mqnamesrv # 前台测试
$ nohup ./bin/mqnamesrv & # 后台运行
$ sudo netstat -nutpl|grep 9876 # 检查进程
tcp6 0 0 :::9876 :::* LISTEN 12358/java
!!!如果你测试搭建的时候内存不够,请修改下面的文件。
$ sed -i 's/-Xms4g -Xmx4g -Xmn2g/-Xms1g -Xmx1g -Xmn512M/' ./bin/runserver.sh
!!!两台都要做。
2.3 配置broker,启动broker。
$ sudo vim /etc/hosts # 两台服务器修改hosts文件
192.168.92.72 rocketmq.master
192.168.92.73 rocketmq.slave
$ ifconfig | head -2 | grep inet | awk '{print $2}'
192.168.92.72
$ cd /data/soft/rocketmq/
$ vim conf/2m-noslave/broker-a.properties
namesrvAddr=rocketmq.master:9876;rocketmq.slave:9876 # 名称服务器地址
brokerClusterName=DefaultCluster # 集群名称
brokerName=broker-a # 经纪人姓名
brokerId=0 # 经纪人ID 0表示主人,正整数表示奴隶
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
sstorePathRootDir=/logs/rocketmqlogs/store
storePathCommitLog=/logs/rocketmqlogs/store/commitlog
$ mkdir -p /logs/rocketmqlogs/store/commitlog
$ sed -i 's#${user.home}/logs#/logs#g' conf/*.xml
$ ifconfig | head -2 | grep inet | awk '{print $2}'
192.168.92.73
$ cd /data/soft/rocketmq/
$ vim conf/2m-noslave/broker-a.properties
namesrvAddr=rocketmq.master:9876;rocketmq.slave:9876
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
sstorePathRootDir=/logs/rocketmqlogs/store
storePathCommitLog=/logs/rocketmqlogs/store/commitlog
$ mkdir -p /logs/rocketmqlogs/store/commitlog
$ sed -i 's#${user.home}/logs#/logs#g' conf/*.xml
经纪人其他配置(提供参考):
配置名称 | 默认值 | 说明 |
listenPort | 10911 | 客户端监听端口号 |
namesrvAddr | null (可手动指定) | 名称服务器地址 |
brokerIP1 | InetAddress for network interface | 如果有多个地址,应该配置 |
brokerName | null | 经纪人姓名 |
brokerClusterName | DefaultCluster | 这个经济人属于哪个集群 |
brokerId | 0 | 经纪人ID,0表示主人,正整数表示奴隶 |
storePathCommitLog | $HOME/store/commitlog/ | 提交日志的文件路径 |
storePathConsumerQueue | $HOME/store/consumequeue/ | 消耗队列的文件路径 |
mapedFileSizeCommitLog | 1024 * 1024 * 1024(1G) | 提交日志的映射文件大小 |
deleteWhen | 04 | 何时删除超出保留时间的提交日志 |
fileReserverdTime | 72 | 在删除之前保留commitlog的小时数 |
brokerRole | ASYNC_MASTER | SYNC_MASTER/ASYNC_MASTER/SLVAE |
flushDiskType | ASYNC_FLUSH | {SYNC_FLUSH / ASYNC_FLUSH}。在确认生产者之前,SYNC_FLUSH模式的代理将每个消息刷新到磁盘上。另一方面,SYNC_FLUSH模式的代理将每个消息刷新到磁盘上。 |
启动broker
$ ./bin/mqshutdown namesrv # 停止namesrv
$ ./bin/mqnamesrv & # 启动namesrv
$ ./bin/mqbroker -c /data/soft/rocketmq/conf/2m-noslave/broker-a.properties & # 启动brokeer
# 启动brokeer时如果内存不足,可以修改下面的配置
$ sed -i 's/-Xms8g -Xmx8g -Xmn4g/-Xms1g -Xmx1g -Xmn512M/' ./bin/runbroker.sh
测试
$ export NAMESRV_ADDR=192.168.92.73:9876 # 发送端设置环境变量
$ sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
$ export NAMESRV_ADDR=192.168.92.72:9876 # 接收端设置环境变量
$ sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer