文章目录
- 前言
- 一、安装rocketmq
- 二、打包rocketmq-mqtt
- 三、配置rocketmq-mqtt
- 四、初始化操作
- 五、启动
- 六、测试
前言
rocketmq从4.9.3开始,可以兼容mqtt协议,需要安装编译一个rocketmq-mqtt工程,参考:https://rocketmq.apache.org/zh/docs/4.x/mqtt/02RocketMQMQTTQuickStart/
一、安装rocketmq
需要安装rocketmq4.9.3以上的版本
安装过程略
broker.conf配置文件中添加参数,开启多队列分发特性
enableLmq = true
enableMultiDispatch = true
二、打包rocketmq-mqtt
安装maven配置环境变量
过程略
下载并打包
git clone https://github.com/apache/rocketmq-mqttcd rocketmq-mqtt
mvn -Prelease-all -DskipTests clean install -U cd distribution/target/
target下是打包的包
三、配置rocketmq-mqtt
下面例子中 ROCKETMQ所在机器192.168.33.22,ROCKETMQ-MQTT服务所在机器172.16.10.160
修改conf/connect.conf
mqttPort=1883enablePrometheus=true
修改conf/meta.conf
IP换成要运行服务的机器的
selfAddress=172.16.10.160:25000
membersAddress=172.16.10.160:25000
修改conf/service.conf
metaAddr的IP换成要运行服务的机器的
username和secretKey配置了要记住,mqtt生产者要使用它做认证
eventNotifyRetryTopic=xx //notify重试topic,提前创建
clientRetryTopic=xx //客户端消息重试topic,提前创建
NAMESRV_ADDR的IP换成RocketMQ nameserver服务所在机器的IP
username=test
secretKey=testNAMESRV_ADDR=192.168.33.22:9876
eventNotifyRetryTopic=eventNotifyRetryTopic
clientRetryTopic=clientRetryTopicmetaAddr=172.16.10.160:25000
四、初始化操作
创建topic
mqadmin updatetopic -c {cluster} -t {topic} -n {namesrv}
上面配置的eventNotifyRetryTopic和clientRetryTopic也必须创建
实际执行如下:
mqadmin updatetopic -c DefaultCluster -t eventNotifyRetryTopic -n 192.168.33.22:9876
mqadmin updatetopic -c DefaultCluster -t clientRetryTopic -n 192.168.33.22:9876
mqadmin updatetopic -c DefaultCluster -t test-topic -n 192.168.33.22:9876
Configure Gateway Node List:
mqadmin updateKvConfig -s LMQ -k LMQ_CONNECT_NODES -v {ip1,ip2} -n {namesrv}
实际执行如下:
mqadmin updateKvConfig -s LMQ -k LMQ_CONNECT_NODES -v 172.16.10.160 -n 192.168.33.22:9876
Configure the first-level topic list
mqadmin updateKvConfig -s LMQ -k ALL_FIRST_TOPICS -v {topic1,topic2} -n {namesrv}
实际执行如下:
mqadmin updateKvConfig -s LMQ -k ALL_FIRST_TOPICS -v eventNotifyRetryTopic,clientRetryTopic,test-topic -n 192.168.33.22:9876
Configure a list of wildcard characters under each first-level topic
mqadmin updateKvConfig -s LMQ -k {topic} -v {topic/+} -n {namesrv}
实际执行如下:
mqadmin updateKvConfig -s LMQ -k eventNotifyRetryTopic -v eventNotifyRetryTopic/+ -n 192.168.33.22:9876mqadmin updateKvConfig -s LMQ -k clientRetryTopic -v clientRetryTopic/+ -n 192.168.33.22:9876mqadmin updateKvConfig -s LMQ -k test-topic -v test-topic/+ -n 192.168.33.22:9876
五、启动
cd bin
sh meta.sh start
sh mqtt.sh start
启动日志在$HOME/logs/start_out.log
启动完后应该meta对应25000端口,mqtt对应1883端口
六、测试
使用rocketmq-mqtt工程中的mqtt-example做测试
将其中的一些IP、topic改为实际的
经测试,可以用mqtt做生产者,rocketmq做消费者