English | 中文
Note:The master
branch may be unstable during development, causing the packaged files to not run or even package. Please use the releases version.
- Developed in Java and Netty, it supports plug-in mode with high performance and high scalability.
- Support mqtt protocol qos0, qos1, qos2 message quality service.
- Supports cleansession, retain, will and other message services in the mqtt protocol.
- Full support for mqtt Topic match filtering.
- Support websocket protocol.
- Support RocksDB for data local storage to make data highly reliable.
Online test environment:120.24.69.113
,TCP port :1883
;Websocket port:1884
.
- Download the release version or
clone
this project. - Execute in the root directory:
mvn -Ppackage-all -DskipTests clean install -U
- Run the jmqttstart script directly in the
jmqtt-distrubution/target/jmqtt/bin
directory. - Local launch: find the BrokerStartup class and configure the startup environment variable: The key is
JMQTT_HOME
, and the value is the absolute address wherejmqtt-distribution
is located. The purpose of the configuration is to specify the address where the jmqtt configuration file and log configuration file are located.
- Clone this project
- Run
docker build -t jmqtt .
- Run
docker run -d -p 1883:1883 -p 1884:1884 --name jmqtt-broker jmqtt
- If you would like to add your custom
conf
folder (default isjmqtt-distribution/conf
), add-v <path_to_your_conf>:/var/jmqtt-data/conf
to bind a volume. Thejmqtt.properties
file contained in your config folder is being used inBrokerStartup
.
- If you would like to add your custom
- broker:Mqtt protocol layer. logical processing. BrokerStartup is the startup class, BrokerController is the initialization class, initialize all the necessary environment, where the plugin configuration of acl, store must also be initialized here.
- common:Common layer. Used to store tool classes, bean classes, etc.
- remoting:Communication layer. Used for connection management, protocol analysis, heartbeat, etc.
- distribution:Configuration module. Used for configuration files, start and stop commands, etc.
- example:Client example. Only java and websocket examples are supported currently.
- group:Cluster management module. Used for message transmission, cluster management, and related operation and maintenance functions.
- store:Storage module. Provides several interfaces for mqtt protocol data, supports memory-based and Rocksdb local storage.
- Support simple operation and maintenance functions.
- Support RocketMQ Bridge.
- Support Kafka Bridge.
- Support $SYS Topic Monitoring.
- Support clustering, multi-host scale-out, high availability.
- Support SSL/TLS.
- Support safety certificate.
- Add connect, publish, subsribe permission authentication interface and make it pluggable.
- Remove Redis storage.
- Optimize Rocksdb local storage.
- Fix bugs in the subscription module.
- Fix bugs that offline messages can't receive.
- Fix bugs that occasionally do not receive retain messages.
- Add storeLog, remotingLog messageTraceLog, clientTraceLog.
- Full support for the mqtt protocol.
- Support Websocket protocol.
- Support for data local persistence