RocketMQ使⽤及常见问题
转⾃
前⾔
本⽂档是针对RocketMQ使⽤及常见问题的说明。
⼀.获取项⽬、安装包及⽂档
1. alibaba/RocketMQ
2. Download the latest release package
3. Get the latest document & Who using RocketMQ
⼆.Linux常⽤命令
1.切换⽤户
1)su – root
2)普通⽤户登录,切换为root⽤户。
3)带杠表⽰表⽰切换到当前⽤户⽬录~
2.查询已安装的jdk
1)rpm -qa|grep jdk
2)rpm -qa 查询所有rpm包。q是查询,a是all。竖杠是管道操作符,就是把查询结果作为输⼊给grep命令。grep jdk是正则匹配带jdk的结果。
3. 卸载jdk
1) -e --nodeps jdk1.8.0_25-1.8.0_25-fcs.x86_64
2)使⽤ rpm -e --nodeps <;包的名字> 不检查依赖,直接删除rpm包
3)erase | don't verify package dependencies
4. Linux服务器之间复制⽂件或⽬录
1)
Secure copy, similar in function to rcp, copies files between two different networked machines, but does so using authentication, and with a security level similar to ssh.
1. cp /home/stacy/images/image*.jpg /home/stacy/archive
2. scp /home/stacy/images/image*.jpg stacy@myhost:/home/stacy/archive
3. scp stacy@myhost:/home/stacy/archive/image*.jpg /home/stacy/downloads
4. scp user@myhost:/home/user/ user@myhost:/home/user/dir2
5. scp someuser@alpha:/ someuser@beta:/anotherdir
2)move or rename files
mv /old /new
5.安装jdk
1)rpm -i jdk-7u71-linux-x64.rpm
2)执⾏命令前需进⼊到⽂件所在⽬录
Install/Upgrade/Erase options:
-i, --install                    install package(s)
6.安装rocketmq
1)tar xzvf []
x, --extract, --get
Extract files from an archive.
-z, --gzip, --gunzip
This option tells tar to read or write archives through gzip, allowing tar to directly operate on several kinds of compressed archives transparently. This option should be used, for example, when operating on files with the extension .
-v, --verbose
Operate verbosely.
-f, --file=ARCHIVE
Use archive file (or device) ARCHIVE.
7.创建⽂件夹
1)mkdir myfile
8.删除⽂件夹
1)rm –rf [dir]
2)参数解释
-f或–force  强制删除⽂件或⽬录。
-r或-R或–recursive  递归处理,将指定⽬录下的所有⽂件及⼦⽬录⼀并处理。
-v或–verbose  显⽰指令执⾏过程。
3)rm  -rf /[dir]/*
9.配置环境变量
1)vi + /etc/profile
2)向⽂件⾥⾯追加以下内容
JAVA_HOME=/usr/java/jdk1.7.0_71
JRE_HOME=/usr/java/jdk1.7.0_71/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
ROCKETMQ_HOME=/app/alibaba-rocketmq
export JAVA_HOME JRE_HOME PATH CLASSPATH ROCKETMQ_HOME
3)使修改⽴即⽣效
source /etc/profile
4)查看环境变量值
echo $PATH
5)添加权限写权限
chmod 644 /etc/profile
chmod -R 777 apache-tomcat-server
6)备注
vi filename 打开或新建⽂件,并将光标置于第⼀⾏⾸
vi +n filename 打开⽂件,并将光标置于第n⾏⾸
vi + filename 打开⽂件,并将光标置于最后⼀⾏⾸
vi 命令打开⽂件,i 进⼊编辑模式 esc进⼊命令模式
:q! 强制退出不保存
:
wq! 强制保存并退出。
profile中export的作⽤:export命令将使系统在创建每⼀个新的shell时,定义这个变量的⼀个拷贝。执⾏脚本时是在⼀个⼦shell环境运⾏的,脚本执⾏完后该⼦shell⾃动退出;⼀个shell中的系统环境变量会被复制到⼦shell中(⽤export定义的变量);⼀个shell中的系统环境变量只对该shell或者它的⼦shell有效,该shell结束时变量消(并不能返回到⽗shell中)。不⽤export定义的变量只对该shell有效,对⼦shell 也是⽆效的。
10.查看tomcat⽇志
1)tail -f catalina.out
2)追踪⽇志,动态显⽰
3)linux安装jdk rpm安装
tail -f /app/apache-tomcat-server/apache-tomcat-8.0.15-8001/logs/catalina.out
Ctrl + c
11.查看tomcat进程
1)ps -ef |grep tomcat
2)grep 会把列头过滤掉,请注意。
UID PID PPID C STIME TTY TIME CMD
⽤户ID进程ID⽗进程ID CPU占⽤率开始时间开始此进程的
TTY
次进程运⾏的总时
命令名
12.查看⽂件夹⼤⼩和⽂件⼤⼩和磁盘剩余空间
1)du -h --max-depth=1    ⼀级⽬录⼤⼩
2) du -h --max-depth=1 *error.log
2)du -h                  ⽬录⼤⼩
3)ll -h
4)df -hl
5)  df -hl /root    查看/root ⽬录已使⽤和可⽤情况
必要参数:
-a 全部⽂件系统列表
-h ⽅便阅读⽅式显⽰
-H 等于“-h”,但是计算式,1K=1000,⽽不是1K=1024 -i 显⽰inode信息
-k 区块为1024字节
-l 只显⽰本地⽂件系统
-m 区块为1048576字节
-
-no-sync 忽略 sync 命令
-P 输出格式为POSIX
--sync 在取得磁盘信息前,先执⾏sync命令
-T ⽂件系统类型
13.杀死进程
1)kill -9 [PID]
14.linux定时任务
1)crontab -e                  编辑任务
2)service crond status          查看服务状态
3)
4)⽰例
# every hour delete rocketmq logs
* */1 * * * find /root/logs/rocketmqlogs/otherdays/* -exec rm -rf {} \;
三.Broker集部署
1.系统优化
1)sh $ROCKETMQ_HOME/bin/os.sh
2)在sh命令前加nohup ,执⾏命令的结果会输出拼接到hohup.out ⽂件,more hohup.out查看⽂件内容。否则信息输出到控制台。在命令结尾加$ 是把作业放在后台执⾏。
2.启动name service
1)sh mqnamesrv &
2)需要进⼊到bin⽬录,或者使⽤全路径
3)当The Name Server boot success.之后,再次启动name service 会报地址已经被占⽤。
3.Broker 集部署[多Master多Slave模式,异步复制]
1)进⼊$ROCKETMQ_HOME/conf/2m-2s-async/ 修改properties配置⽂件
2)配置⽂件
broker-a.properties
broker-a-s.properties
broker-b.properties
broker-b-s.properties
3)启动broker
### 在机器 A,启动第⼀个 Master
sh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a.properties &
### 在机器 B,启动第⼀个 Slave
sh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-a-s.properties &
### 在机器 C,启动第⼆个 Master
sh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b.properties &
### 在机器 D,启动第⼆个 Slave
sh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-sync/broker-b-s.properties &
4)《开发指导》⽂档中,详细记录了各个参数,都可以设到properties⽂件⾥。
5)启动时可以 -n 指定多个namesrv。例如 sh mqbroker –n "10.128.2.22:9876;10.128.2.23:9876" -c$ROCKETMQ_HOME/conf/2m-2s-async/broker-b.properties &
6)注意路径sync 和async 不要马虎。推荐namesrv也配置到properties⽂件中。
7)如果⼀台机器想启动多个broker ,需要修改监听端⼝(默认为10911),否则报地址已经被占⽤。
8)如果Name Server 未启动或者不能连接到服务器,指定该name service 的producer发消息,会报:No route info of this topic。
9)启动第⼀个broker 不需要指定listenPort ,默认占⽤10911和10912端⼝,所以⼀台机器启动两个bro
ker 时,第⼆个broker端⼝应该设置10913,10914 。
listenPort=10913
haListenPort=10914
10)特别注意!!
haListenPort 在《指导》中没有说明。
11)查看系统端⼝占⽤情况
netstat -apn|grep 1091
12)详细参数设置需要⾃⾏查阅《RocketMQ Developer Guide.pdf》⽂档。
13)RocketMQ 控制台:
进⼊ RocketMQ/bin
sh mqadmin
查看哪些命令
sh mqadmin help [命令名]
显⽰帮助信息
例如执⾏查看23 server的集消息
sh mqadmin clusterList -n 10.128.2.23:9876
14)删除topic
sh mqadmin clusterList -n 172.16.50.238:9876
sh mqadmin deleteTopic -c DefaultCluster -n 172.16.50.238:9876 -t USERLOGIN
4.关闭
sh mqshutdown namesrv
sh mqshutdown broker
5.退出
1)exit
2)使⽤xshell启动服务后,退出时需要⽤命令exit  。如果直接点关闭程序按钮关闭终端,会导致刚才的进程被关闭。特别注意!!。
四.验证broker机制
1.⽅案 master-slave
1)单机启动a、a-s
2)DefaultPushConsumer 设置为单线程
3)consumer 打断点
4)producer 发送10条消息
5)consumer消费⼀条消息后kill 掉master
6)结果:producer不能继续发送消息,no route info; consumer 可以继续消费剩余的9条信息。
五.项⽬运⾏遭遇的问题
1.磁盘空间不够
1)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。