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.goUsage: hmq [options] Broker Options: -w, --worker <number> Worker num to process message, perfer (client num)/10. (default 1024) -p, --port <port> Use port for clients (default: 1883) --host <host> Network host to listen on. (default "0.0.0.0") -ws, --wsport <port> Use port for websocket monitoring -wsp,--wspath <path> Use path for websocket monitoring -c, --config <file> Configuration file Logging Options: -d, --debug <bool> Enable debugging output (default false) -D Debug enabled Cluster Options: -r, --router <rurl> Router who maintenance cluster info -cp, --clusterport <cluster-port> 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
- Auth Connect
- Auth ACL
- Cache Support
-
Kafka Bridge Support
- Action Deliver
- Regexp Deliver
-
HTTP API
- Disconnect Connect (future more)
| Prefix | Examples | Publish | | ------------------- |-------------------------------------------|--------------------------- --| | $share/<group>/topic | mosquitto_sub -t ‘$share/<group>/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/<clientID> payload: {"clientID":"client001","online":true/false,"timestamp":"2018-10-25T09:32:32Z"}-
High throughput
-
High concurrency
-
Low memory and CPU
- Apache License Version 2.0
- Surgermq.(https://github.com/zentures/surgemq)