RocketMQ-环境搭建(单master模式-ubuntu版)
时间:2022-07-25
本文章向大家介绍RocketMQ-环境搭建(单master模式-ubuntu版),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、linux安装unzip软件
输入命令:
sudo apt-get install unzip
提示:如果出现
Unable to locate package
则需要先执行命令更新:
sudo apt-get update
二、添加Hosts信息
vim /etc/hosts
#内网IP
172.19.129.62 rocketmq-nameserver1
172.19.129.62 rocketmq-master1
三、上传rocketmq-all-4.4.0-bin-release.zip
- 将压缩包上传到目录:/home/xjf/upload-files(个人决定)
- 然后将压缩包解压到指定目录:
unzip rocketmq-all-4.4.0-bin-release.zip -d /opt/software
- cd到解压后的目录,然后创建对应的软连接(相当于快捷方式)
cd /opt/software
ln -s rocketmq-all-4.4.0-bin-release rocketmq
四、创建存储路径
mkdir /opt/software/rocketmq/store
mkdir /opt/software/rocketmq/store/commitlog
mkdir /opt/software/rocketmq/store/consumequeue
mkdir /opt/software/rocketmq/store/index
五、RocketMQ配置文件
vim /opt/software/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
#在发送消息时,自动创建服务器不存在的 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=/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
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制 Master
#- SYNC_MASTER 同步双写 Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128
六、修改日志配置文件
#启动日志应该会自动到这个文件夹下,我实践时却是在bin目录的$目录下(不知道原因)
mkdir -p /opt/software/rocketmq/logs
cd /opt/software/rocketmq/conf && sed -i 's#${user.home}#/usr/local/rocketmq#g' *.xml
七、修改脚本参数
vim /opt/software/rocketmq/bin/runbroker.sh
#==============================================================================
# 开发环境 JVM Configuration
#==============================================================================
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn1g -XX:PermSize=128m - XX:MaxPermSize=320m"
vim /opt/software/rocketmq/bin/runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:PermSize=128m - XX:MaxPermSize=320m"
八、启动NameServer
cd /opt/software/rocketmq/bin
nohup sh mqnamesrv & (运行后可能会有中断提示,不用管,使用Ctrl+C关闭)
此时可以查看进程
jps
出现:1285 NamesrvStartup。则代表运行成功
九、启动BrokerServer A
cd /opt/software/rocketmq/bin
nohup sh mqbroker -c /opt/software/rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 &
关闭RocketMQ服务方法: 关闭namesrv服务:
sh bin/mqshutdown namesrv
关闭broker服务:
sh bin/mqshutdown broker
十、使用RocketMQ控制台
- 下载rocketmq console,地址:https://github.com/apache/incubator-rocketmq-externals/tree/master/rocketmq-console。
- 下载源码后,找到配置文件application.properties,并按照自己需求进行配置。例如:rocketmq.config.namesrvAddr=namesrv服务地址(ip1:port;ip2:port)(使用内网的IP),此处填写为:rocketmq-nameserver1:9876
- 将项目打成jar包,并上传到linux的目录:/home/xjf/upload-files
- 后台运行线jar包并打印日志:
nohup java -jar rocketmq-console-ng-1.0.1.jar >console.out &
- 最后可以通过ip地址访问到MQ的控制台
借鉴于:https://blog.csdn.net/weixin_33955681/article/details/91222818
- ReactNative调用Android原生模块
- jvm调优的工具介绍
- Python时间序列预测案例研究:巴尔的摩年度用水量
- [一对一课程] 之 设计并实现第一个JS模块?
- React Native 使用react-native-image-picker库实现图片上传功能
- 再谈Android动态链接库
- React Native之Permissions权限适配
- React Native项目实战之fetch请求并填充界面
- CocoaPods使用详解
- 2018年伊始,系统编程语言Rust为何令程序员感到兴奋?
- React Native项目实战之搭建美团个人中心界面
- React Native动画Animated详解
- iOS动画总结
- React Native之react-native-scrollable-tab-view详解
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 通过 PHP Mysqli 扩展与数据库交互
- python 中的元类详解
- 我扒了半天源码,终于找到了Oauth2自定义处理结果的最佳方案!
- python 解决多核处理器算力浪费的现象
- python实现单例模式的5种方法
- java序列化和序列化ID的作用
- python函数式编程
- 让Vim打造成强大的IDE,附_vimrc的配置和使用
- python 中面向切面编程AOP和装饰器
- HashMap&ConcurrentHashMap&HashTable
- python中的垃圾回收机制
- python中值传递还是引用传递?
- 基于Docker+Jenkins+Git的集成开发环境搭建
- python 函数的本质理解
- centOS(离线) off-line install docker-ce