RocketMQ MQTT Protocol Enhancement

A new MQTT protocol architecture model, based on which RocketMQ can better support messages from terminals such as IoT devices and Mobile APP. Based on the RocketMQ message unified storage engine, it supports both MQTT terminal and server message sending and receiving.The entire project design refer to MQTT overview.


The relevant architecture design is introduced in RIP-33. The queue model of MQTT needs to be based on the light message queue, For the design of the specific light message queue, please refer to the RIP-28(LMQ)-wiki of RocketMQ.

Get Started


The queue model of MQTT needs to be based on the light message queue feature (RIP-28) of RocketMQ. RocketMQ has only supported this feature since version 4.9.3. Please ensure that the installed version of RocketMQ already supports this feature.

For the quick start of light message queue, please refer to Example_LMQ of RocketMQ. For example, set the following parameters to true in broker.conf

enableLmq = true
enableMultiDispatch = true

Build Requirements

The current project requires JDK 1.8.x. When building on MAC arm64 the recommended JDK 1.8 must be based on 386 architecture or use Maven flag -Dos.arch=x86_64 when building with Maven.

  1. Clone
  2. Build the package
  3. ConfigSome important configuration items in the service.conf configuration file
Config KeyInstruction
usernameused for auth
secretKeyused for auth
NAMESRV_ADDRspecify namesrv address
eventNotifyRetryTopicnotify event retry topic
clientRetryTopicclient retry topic

And some configuration items in the meta.conf configuration file

Config KeyInstruction
selfAddressmeta cur node ip:port, e.g.
membersAddressmeta all nodes ip:port, e.g.,,


create all first-level topics, including eventNotifyRetryTopic and clientRetryTopic in the configuration file above.

sh mqadmin updatetopic -c {cluster} -t {topic} -n {namesrv}
  1. Initialize Meta
  • Configure Gateway Node List
  • Configure the first-level topic list
  • Configure a list of wildcard characters under each first-level topic
  1. Start Process


  1. The mqtt-example module has written basic usage example code, which can be used for reference

Protocol Version

The currently supported protocol version is MQTT 3.1.1.


At present, an implementation based on the HmacSHA1 signature algorithm is provided by default, Refer to AuthManagerSample. Users can customize other implementations to meet the needs of businesses to flexibly verify resources and identities.

Meta Persistence

At present, meta data storage and management is simply implemented through the kvconfig mechanism of namesrv by default, Refer to MetaPersistManagerSample. Users can customize other implementations.


Apache License, Version 2.0 Copyright (C) Apache Software Foundation.

cd bin
sh start
sh start
sh mqadmin updateKvConfig  -s LMQ -k {topic} -v {topic/+}  -n {namesrv}
sh mqadmin updateKvConfig -s LMQ -k ALL_FIRST_TOPICS -v {topic1,topic2} -n {namesrv}
sh mqadmin updateKvConfig -s LMQ -k LMQ_CONNECT_NODES -v {ip1,ip2} -n {namesrv}
cd distribution/target/
cd conf
cd rocketmq-mqtt
mvn -Prelease-all -DskipTests clean install -U 
git clone

Download Details:

Author: apache

Official Github: 

License: Apache-2.0 license

#apache  #data   #data-analysis #data-science 

RocketMQ MQTT Protocol Enhancement
1.45 GEEK