MQTT broker implementation as Vert.x module.
Credits:
Moquette https://github.com/andsel/moquette
for coder and decoder implementation of MQTT messages.
Requires Vert.x 3.0.0 and Maven 3+
git clone https://github.com/giovibal/vertx-mqtt-broker-mod.git
cd vertx-mqtt-broker-mod
mvn clean install
use vertx command to start the service ...
vertx run maven:io.github.giovibal.mqtt:vertx-mqtt-broker-mod:2.0-SNAPSHOT::mqtt-broker -conf config.json
vertx run maven:io.github.giovibal.mqtt:vertx-mqtt-broker-mod:2.0-SNAPSHOT::mqtt-broker -Dvertx.metrics.options.jmxEnabled=true -conf config.json
vertx run io.github.giovibal.mqtt.MQTTBroker -cp target/vertx-mqtt-broker-mod-2.0-SNAPSHOT-fat.jar -conf conf.json
or uber jar ...
java -jar target/vertx-mqtt-broker-mod-2.0-SNAPSHOT-fat.jar -conf config.json
java -Dvertx.metrics.options.jmxEnabled=true -jar target/vertx-mqtt-broker-mod-2.0-SNAPSHOT-fat.jar -conf config.json
cluster ...
vertx run maven:io.github.giovibal.mqtt:vertx-mqtt-broker-mod:2.0-SNAPSHOT::mqtt-broker -conf config.json -cluster -cluster-host <IP>
vertx run io.github.giovibal.mqtt.MQTTBroker -cp target/vertx-mqtt-broker-mod-2.0-SNAPSHOT-fat.jar -conf config1.json -cluster -cluster-host <IP>
- Suport both QoS 0, 1 and 2 messages
- Persistence and session management (cleanSession=false)
- Multi-tenancy: isolation of topics and storage, just use username@tenant as username
- MQTT over WebSocket
- Retain flag
- Oauth2 authentication integrated with WSO2 Identity Server
- TLS support over TCP and Websocket
- Multiple endpoint configuration in the same broker instance
- Refactoring, new architecture
- Clustering and Hign Availability
- Pluggable persistence
- Implement some out-of-the-box persistence managers: RAM, Cassandra, HBase, MongoDB
- Implement will message support