rocketmq使用mqtt协议

文章目录

  • 前言
  • 一、安装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-mqtt

cd 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=1883

enablePrometheus=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=test

NAMESRV_ADDR=192.168.33.22:9876
eventNotifyRetryTopic=eventNotifyRetryTopic
clientRetryTopic=clientRetryTopic

metaAddr=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:9876

mqadmin updateKvConfig  -s LMQ -k clientRetryTopic -v clientRetryTopic/+ -n 192.168.33.22:9876

mqadmin 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做测试
rocketmq使用mqtt协议_第1张图片
将其中的一些IP、topic改为实际的
经测试,可以用mqtt做生产者,rocketmq做消费者
rocketmq使用mqtt协议_第2张图片
rocketmq使用mqtt协议_第3张图片

你可能感兴趣的:(rocketmq,rocketmq)