搭建RocketMQ


RocketMQ


要求

  • ECS服务器
  • 安全组规则添加出入方向的9876、10909、10911端口
  • wget
  • zip、unzip
  • JDK
  • Maven(源码安装时需要)

安装RocketMQ

选择二进制文件安装

# 下载最新版本4.8的二进制文件
wget https://mirrors.gigenet.com/apache/rocketmq/4.8.0/rocketmq-all-4.8.0-bin-release.zip
# 解压
unzip rocketmq-all-4.8.0-bin-release.zip

修改JVM内存设置

根据机器情况修改内存大小

vi bin/runserver.sh
# JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
vi bin/runbroker.sh
# JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
vi bin/tools.sh
# JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"

启动和关闭

启动

以下操作均在RocketMQ目录下

ls -l

total 48
drwxr-xr-x 2 root root  4096 Dec  9 19:46 benchmark
drwxr-xr-x 3 root root  4096 Dec  4 14:26 bin
drwxr-xr-x 6 root root  4096 Apr 13 21:07 conf
drwxr-xr-x 2 root root  4096 Dec  9 19:46 lib
-rw-r--r-- 1 root root 17336 Oct 23 10:29 LICENSE
-rw-r--r-- 1 root root  1338 Dec  4 14:26 NOTICE
-rw-r--r-- 1 root root  5132 Dec  4 14:26 README.md
  1. 启动Namesrv

    # 启动Namesrv
    nohup sh bin/mqnamesrv &
    # 查看启动日志
    tail -f ~/logs/rocketmqlogs/namesrv.log
  2. 启动Broker

    在 conf 目录下,RocketMQ 提供了多种 Broker 的配置文件:

    • broker.conf :单主,异步刷盘。
    • 2m-noslave/ :双主,异步刷盘。
    • 2m-2s-async/ :两主两从,异步复制,异步刷盘。
    • 2m-2s-sync/ :两主两从,同步复制,异步刷盘。
    • dledger/ :Dledger 集群,至少三节点。
    # 修改broker.conf
    vi conf/broker.conf
    # 在末尾添加,公网地址(broker默认是通过私有ip启动,会导致客户端无法远程连接)
    # namesrvAddr = ECS公网地址
    # brokerIP1 = ECS公网地址
    # 启动Broker,并开启允许自动创建topic,localhost可以换成ECS的公有ip
    nohup sh bin/mqbroker -c conf/broker.conf  -n localhost:9876 autoCreateTopicEnable=true &
    # 查看启动日志
    tail -f ~/logs/rocketmqlogs/broker.log

关闭

# 关闭namesrv服务
sh bin/mqshutdown namesrv
# 关闭broker服务 
sh bin/mqshutdown broker

测试

  1. 发送消息
# 设置 Namesrv 服务器的地址
export NAMESRV_ADDR=127.0.0.1:9876

# 执行生产者 Producer 发送测试消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
  1. 消费消息
# 设置 Namesrv 服务器的地址
export NAMESRV_ADDR=127.0.0.1:9876

# 执行消费者 Consumer 消费测试消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

简单示例

Rocketmq仓库的example 目录下,提供了 RocketMQ 示例。

常用命令

# 查看具体命令 : 
sh mqadmin
# 查看具体命令的使用 : 
sh mqadmin help [具体命令]

# 示例
#查看所有消费组group:
sh mqadmin consumerProgress -n 192.168.1.23:9876
#查看指定消费组下的所有topic数据堆积情况:
sh mqadmin consumerProgress -n 192.168.1.23:9876 -g warning-group
#查看所有topic:
sh mqadmin topicList -n 192.168.1.23:9876
#查看topic信息列表详情统计
sh mqadmin topicstatus -n 192.168.1.23:9876 -t topicWarning
# 新增topic
sh mqadmin updateTopic –n 192.168.1.23:9876 –c DefaultCluster –t topicWarning
# 删除topic
sh mqadmin deleteTopic –n 192.168.1.23:9876 –c DefaultCluster –t topicWarning
# 查询集群消息
sh mqadmin  clusterList -n 192.168.1.23:987

参考:https://blog.csdn.net/varyall/article/details/79630037

遇到的错误

  1. mqadmin命令执行报错 解决:vim打开
    tools.sh,在JAVA_OPT配置中,在-Djava.ext.dirs这一行的后面添加本机java
    ext的路径 修改前:

    JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=128m"
    JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${BASE_DIR}/lib:${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/ext"
    JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}"

    修改后:

    JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=128m"
    JAVA_OPT="${JAVA_OPT} -Djava.ext.dirs=${BASE_DIR}/lib:${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/ext:/usr/lib/jvm/jre/lib/ext"
    JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}"

  目录