RocketMQ--环境搭建(单机&docker&集群)
一、单机安装
1、安装RocketMQ需要使用JDK,首先需要配置好JDK,安装JDK
2、下载并启动RocketMQ
# 下载RocketMQ wget https://mirrors.bfsu.edu.cn/apache/rocketmq/4.9.0/rocketmq-all-4.9.0-bin-release.zip # 解压缩 unzip rocketmq-all-4.9.0-bin-release.zip # 切换到bin目录 cd rocketmq-all-4.9.0-bin-release/bin/ # 后台启动namesrv nohup ./mqnamesrv > /dev/null 2>&1 & # 后台启动broker nohup ./mqbroker -n localhost:9876 > /dev/null 2>&1 &
如果出现如下问题:
这是因为内存不足,导致java程序运行不起来,可以设置namesrv和broker的内占用内存
修改runserver.sh和runbroker.sh中关于内存的配置
3、验证消息
首先修改namesrv的地址
#编辑profile文件 vi /etc/profile #刷新 source /etc/profile #设置nameserver服务器 export NAMESRV_ADDR=localhost:9876
然后验证消息发送和消息消费
#测试消息发送命令
sh tools.sh org.apache.rocketmq.example.quickstart.Producer
#测试消息接收命令
sh tools.sh org.apache.rocketmq.example.quickstart.Consumer
二、Docker安装
1、安装docker
2、拉取镜像
docker pull foxiswho/rocketmq:server-4.3.2 docker pull foxiswho/rocketmq:broker-4.3.2
3、创建namesrv容器
docker run -di -p 9877:9876 --name=rmqserver -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" -e "JAVA_OPTS=-Duser.home=/opt" foxiswho/rocketmq:server-4.3.2
4、创建broker容器
docker run -di -p 10911:10911 -p 10909:10909 --name=rmqbroker -e "JAVA_OPTS=-Duser.home=/opt" -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" foxiswho/rocketmq:broker-4.3.2
5、配置broker
# 配置broker容器的配置文件 docker exec -it rmqbroker /bin/bash cd /etc/rocketmq/ vi broker.conf #配置内容 brokerIP1=192.168.124.11 namesrvAddr=192.168.124.11:9876 brokerName=broker-a
6、重新启动
docker start rmqserver rmqbroker
7、停止和删除容器
docker stop rmqbroker rmqserver
docker rm rmqbroker rmqserver
三、集群搭建
rocketmq已经提供了集群的样例
1、修改如下配置文件:
${RocketMQ_HOME}/conf/2m-2s-sync/broker-a.properties ${RocketMQ_HOME}/conf/2m-2s-sync/broker-a-s.properties ${RocketMQ_HOME}/conf/2m-2s-sync/broker-b.properties ${RocketMQ_HOME}/conf/2m-2s-sync/broker-b-s.properties
修改内容:
brokerClusterName=DefaultCluster brokerName=broker-b brokerId=1 deleteWhen=04 fileReservedTime=48 brokerRole=SLAVE flushDiskType=ASYNC_FLUSH listenPort=40911 storePathRootDir=/Users/hadoop/store-a/ storePathCommitLog=/Users/hadoop/store-a/commitlog/ storePathConsumerQueue=/Users/hadoop/store-a/consumequeue/
需要说明一下,如果是同一台机子,监听端口需要修改不一样。
2、启动broker
bin/mqbroker -c conf/2m-2s-sync/broker-a.properties -n localhost:9876 & bin/mqbroker -c conf/2m-2s-sync/broker-a-s.properties -n localhost:9876 & bin/mqbroker -c conf/2m-2s-sync/broker-b.properties -n localhost:9876 & bin/mqbroker -c conf/2m-2s-sync/broker-b-s.properties -n localhost:9876 &
5、查看
6、对于broker的全量配置内容如下所示
#所属集群名字 brokerClusterName=tl-rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样; 在broker-b.properties中此处需要修改为:brokerName=broker-b brokerName=broker-a #0 表示 Master,>0 表示 Slave brokerId=0 #nameServer地址,分号分割 namesrvAddr=node1:9876;node2:9876 #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 defaultTopicQueueNums=4 #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=true #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true #Broker 对外服务的监听端口 listenPort=10911 #删除文件时间点,默认凌晨 4点 deleteWhen=04 #文件保留时间,默认 48 小时 fileReservedTime=120 #commitLog每个文件的大小默认1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每个文件默认存30W条,根据业务情况调整 mapedFileSizeConsumeQueue=300000 destroyMapedFileIntervalForcibly=120000 redeleteHangedFileInterval=120000 #检测物理文件磁盘空间 diskMaxUsedSpaceRatio=88 #存储路径 storePathRootDir=/apps/rocketmq-4.2.0/2m2s-data/store #commitLog 存储路径 storePathCommitLog=/apps/rocketmq-4.2.0/2m2s-data/store/commitlog #消费队列存储路径存储路径 storePathConsumeQueue=/apps/rocketmq-4.2.0/2m2s-data/store/consumequeue #消息索引存储路径 storePathIndex=/apps/rocketmq-4.2.0/2m2s-data/store/index #checkpoint 文件存储路径 storeCheckpoint=/apps/rocketmq-4.2.0/2m2s-data/store/checkpoint #abort 文件存储路径 abortFile=/apps/rocketmq-4.2.0/2m2s-data/store/abort #限制的消息大小 maxMessageSize=65536 flushCommitLogLeastPages=4 flushConsumeQueueLeastPages=2 flushCommitLogThoroughInterval=10000 flushConsumeQueueThoroughInterval=60000 checkTransactionMessageEnable=false sendMessageThreadPoolNums=128 pullMessageThreadPoolNums=128 #Broker 的角色 #- ASYNC_MASTER 异步复制Master #- SYNC_MASTER 同步双写Master #- SLAVE brokerRole=SYNC_MASTER #刷盘方式 #- ASYNC_FLUSH 异步刷盘 #- SYNC_FLUSH 同步刷盘 flushDiskType=ASYNC_FLUSH
四、控制台
1、搭建
# 拉取镜像 docker pull styletang/rocketmq-console-ng:1.0.0 # 创建并运行容器 docker run -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.124.11:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8082:8080 -t styletang/rocketmq-console-ng:1.0.0
2、查看
------------------------------------------------------------------
-----------------------------------------------------------
---------------------------------------------
朦胧的夜 留笔~~
-----------------------------------------------------------
---------------------------------------------
朦胧的夜 留笔~~