RocketMQ
1.安装RocketMQ
1.1 启动RocketMQ
1.1.1 启动NameServer
1.启动NameServer
cd 进入RocketMQ安装目录
nohup sh bin/mqnamesrv > mqnamesrv.log 2>&1 &
2.查看启动日志
tail -f ~/logs/rocketmqlogs/namesrv.log
3.查看进程
ps -ef|grep rocketmq 或 jps
1.1.2 启动Broker
1.启动Broker
cd 进入RocketMQ安装目录
nohup sh bin/mqbroker -n localhost:9876 > mqbroker.log 2>&1 &
2.查看启动日志
tail -f ~/logs/rocketmqlogs/broker.log
3.查看进程
ps -ef|grep rocketmq 或 jps
问题描述
RocketMQ默认的虚拟机内存较大,启动Broker如果因为内存不足失败,需要编辑如下两个配置文件,修改JVM内存大小
# 编辑runborker.sh和runserver.sh修改默认JVM大小 vim runborker.sh vim runserver.sh # JVM Configuration JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g -XX:PermSize=128m -XX:MaxPermSize=320m" JAVA_OPT="${JAVA_OPT} -server -Xms256g -Xmx256g -Xmn128g -XX:PermSize=128m -XX:MaxPermSize=320m" JAVA_OPT="${JAVA_OPT}" -XX:+UseConcMarkSweepGC 对老年代使用并发标记扫描收集。 -XX:+UseCMSCompactAtFullCollection 对老年代使用并发回收。 -XX:CMSInitiatingOccupancyFraction=70 默认CMS是在tenured generation沾满70%(默认68%)的时候开始进行CMS收集 -XX:+CMSParallelRemarkEnabled 为了减少第二次暂停的时间,开启并行remark -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled 相对于并行收集器,CMS收集器默认不会对永久代进行垃圾回收。如果希望对永久代进行垃圾回收,可用设置标志-XX:+CMSClassUnloadingEnabled。 -XX:SurvivorRatio=8 -XX:+DisableExplicitGC -XX:-UseParNewGC" JAVA_OPT="${JAVA_OPT} -verbose:gc -Xloggc:/dev/shm/rmq_srv_gc.log -XX:+PrintGCDetails" JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow" JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages" JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${BASE_DIR}/lib" #JAVA_OPT="${JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n" JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}"
1.2 关闭RocketMQ
1. 关闭NameServer
sh bin/mqshutdown namesrv
2. 关闭Broket
sh bin/mqshutdown broker
1.3 测试RocketMQ
发送消息
#1.设置环境变量 export NAMESRV_ADDR=localhost:9876 #2.使用安装包的dome发送消息 sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
接收消息
#1.设置环境变量 export NAMESRV_ADDR=localhost:9876 #2.使用安装包的dome发送消息 sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
2.RocketMQ集群搭建
2.1 各角色介绍
- Producer: 消息的发送者;举例:发信者
- Comsumer: 消息接收者; 举例:收信者
- Broker: 暂存和传输消息; 举例: 邮局
- NameServer: 管理Broker; 举例:各个邮局的管理机构
- Topic: 区分消息的种类;一个发送者可以发送消息给一个或者多个Topic;一个消息的接收者可以订阅一个或者多个Topic消息
- Message Queue: 相当于是Topic的分区;用于并行发送和接收消息
2.2 集群搭建方式
2.2.1 集群的模式
- 单Master模式
- 多Master模式
- 多Master多Slave模式(异步)
- 多Master多Slave模式(同步)