Centos单机部署RocketMQ,RocketMQ-MQTT以及管理界面
RocketMQ官网:https://rocketmq.apache.org/download
虚拟机环境
- Centos7.9
- jdk1.8
- 8h8g
下载rocketmq源码文件:https://rocketmq.apache.org/download
根据需要选择对应的版本,我这边版本是4.9.4
部署
将rocketmq-all-4.9.4-bin-release.zipp
上传到linux服务器上面/usr/local/
执行
创建/etc/profile.d/rocketmq.sh
文件
调低RocketMQ的JVM大小
RocketMQ的默认JVM太大,不适合在开发测试环境中使用,需要调低JVM大小。
在RocketMQ的安装目录(本例为/usr/local/rocketmq
),查找sh脚本中的JVM参数设置:find . -name '*.sh' | xargs egrep 'Xms'
需要修改以下sh脚本的JVM参数:
- bin/runserver.sh
- bin/runbroker.sh
- bin/tools.sh
修改前记得先备份相应脚本,具体JVM大小根据实际情况设定。
runserver.sh
runbroker.sh
tools.sh
修改配置文件参数
修改conf/broker.conf
文件
最后追加
启动namesrv
启动命令
nohup sh bin/mqnamesrv >/dev/null 2>&1 &
Name Server的默认端口为
9876
,运行sh bin/mqnamesrv -p可查看Name Server的配置项,并可通过-c namesrv.conf方式指定配置文件启动:nohup sh bin/mqnamesrv -n 服务器内网ip:9876 &
查看日志
tail -f ~/logs/rocketmqlogs/namesrv.log
namesrv服务关闭命令
sh bin/mqshutdown namesrv
占用端口:9876
启动Broker
启动Broker时需要指定要连接的Name Server
启动命令
nohup sh bin/mqbroker -n localhost:9876 -c conf/broker.conf >/dev/null 2>&1 &
查看日志:
tail -f ~/logs/rocketmqlogs/broker.log
broker服务关闭命令:
sh bin/mqshutdown broker
占用端口:10909 10911 10912
测试生产者和消费者
topic一些操作
查看所有topic
sh bin/mqadmin topicList -n localhost:9876
查看集群信息
sh bin/mqadmin clusterList -n 127.0.0.1:9876
查看Topic 列表信息
sh mqadmin topicRoute -n 127.0.0.1:9876 -t broker-a
查看Topic 统计信息
sh mqadmin topicStatus -n 127.0.0.1:9876 -t broker-a
部署 RocketMQ Dashboard
参考:https://rocketmq.apache.org/docs/%E9%83%A8%E7%BD%B2%E4%B8%8E%E8%BF%90%E7%BB%B4/17Dashboard
我这边是源码安装编译后上传服务器(可选docker部署),执行:java -jar rocketmq-dashboard-1.0.0.jar --rocketmq.config.namesrvAddr=127.0.0.1:9876
--rocketmq.config.namesrvAddr
是指定namesrv服务地址占用端口:8080
部署 RocketMQ MQTT Server
参考:https://github.com/apache/rocketmq-mqtt
(网上资料很少很少)
修改broker.conf
新增如下信息
下载源码,编译源码
这边是通过IDEA编译的,代码克隆地址:https://github.com/apache/rocketmq-mqtt
下载后可编译:mvn -Prelease-all -DskipTests clean install -U
编译完成:
二选一上传到服务器,解压后~进入bin
目录执行:sed -i 's/\r$//' *.sh
(因为是windows编译shell会报换行的错)
修改配置文件
修改conf/service.conf配置文件
调低RocketMQ的JVM大小
RocketMQ的默认JVM太大,不适合在开发测试环境中使用,需要调低JVM大小。
bin/runserver.sh
创建主题
初始化元
配置网关节点列表
sh mqadmin updateKvConfig -s LMQ -k LMQ_CONNECT_NODES -v 10.80.210.206 -n 10.80.210.206:9876
配置一级主题列表
sh mqadmin updateKvConfig -s LMQ -k ALL_FIRST_TOPICS -v eventNotifyRetryTopic,clientRetryTopic -n 10.80.210.206:9876
在每个第一级主题下配置通配符列表
启动mqtt
验证是否启动成功
端口
占用了:1883(mqtt协议) 7001(RPC协议) 8888(ws协议)
进程
ps -ef | grep mqtt
or ps -ef | gerp org.apache.rocketmq.mqtt.cs.starter.Startup
查看日志
tail -f ~/logs/mqtt.log
验证登录消费测试
使用的是官方mqtt-example模块
,网上资料很少很少(几乎为零),暂时还是存在启动成功,使用mqttx的工具死活认证失败(可能是加密方式不行),然后修改了官方的例子进行修改,完美连上。
设置开机自启
在/usr/local/bin/
创建start-rocketmq.sh
的shell脚本,内容如下:
执行:echo "/bin/bash /usr/local/bin/start-rocketmq.sh" >> /etc/rc.d/rc.local
chmod +x /usr/local/bin/start-rocketmq.sh
chmod +x /etc/rc.d/rc.local
你好,请问启动MQTT服务后,网页端可以连接8888端口,但是不能发送消息,也收不到订阅topic的消息,这是什么原因
而且,自带的MQTTConsumer也收不到 MQTTProducer发布的消息
这个具体需要去看github上的步骤了,因为当时mqtt也是刚出来,我们公司也只是验证阶段,后续研发也没具体反馈~
嗯,感谢回复,找到原因了,在cosole上配置的mqtt不能直接用