High performance mqtt broker
Golang MQTT Broker, Version 3.1.1, and Compatible for eclipse paho client and mosquitto-client
$ go get github.com/fhmq/hmq $ cd $GOPATH/github.com/fhmq/hmq $ go run main.go
Usage: hmq [options]Broker Options: -w, --worker Worker num to process message, perfer (client num)/10. (default 1024) -p, --port Use port for clients (default: 1883) --host Network host to listen on. (default "0.0.0.0") -ws, --wsport Use port for websocket monitoring -wsp,--wspath Use path for websocket monitoring -c, --config Configuration file
Logging Options: -d, --debug Enable debugging output (default false) -D Debug enabled
Cluster Options: -r, --router Router who maintenance cluster info -cp, --clusterport Cluster listen port for others
Common Options: -h, --help Show this message
{ "workerNum": 4096, "port": "1883", "host": "0.0.0.0", "cluster": { "host": "0.0.0.0", "port": "1993" }, "router": "127.0.0.1:9888", "wsPort": "1888", "wsPath": "/ws", "wsTLS": true, "tlsPort": "8883", "tlsHost": "0.0.0.0", "tlsInfo": { "verify": true, "caFile": "tls/ca/cacert.pem", "certFile": "tls/server/cert.pem", "keyFile": "tls/server/key.pem" }, "plugins": { "auth": "authhttp", "bridge": "kafka" } }
Supports QOS 0 and 1
Cluster Support
Containerization
Supports retained messages
Supports will messages
Websocket Support
TLS/SSL Support
Auth Support
Kafka Bridge Support
HTTP API
| Prefix | Examples | Publish | | ------------------- |-------------------------------------------|--------------------------- --| | $share//topic | mosquitto_sub -t ‘$share//topic’ | mosquitto_pub -t ‘topic’ |
1, start router for hmq (https://github.com/fhmq/router.git) $ go get github.com/fhmq/router $ cd $GOPATH/github.com/fhmq/router $ go run main.go 2, config router in hmq.config ("router": "127.0.0.1:9888")
Other Version Of Cluster Based On gRPC: click here
topic: $SYS/broker/connection/clients/ payload: {"clientID":"client001","online":true/false,"timestamp":"2018-10-25T09:32:32Z"}
High throughput
High concurrency
Low memory and CPU