Hermes is a tiny MQTT compatible broker written in Go.
The goals of the project are as below
- Easy to compile, and run
- Tiny footprint
- Extensible
- Adhering to standards
This is in no way ready to be consumed. This is a project which arose out of my boredom during COVID-19, and general issues whilst working with other production ready brokers such as ActiveMQ, Solace, NATS etc.
- CONNECT
- PUBLISH, PUBACK
- SUBSCRIBE, SUBACK
- DISCONNECT
- Persistent sessions
- QoS 2 support
- Offline messages
- Wildcard subscriptions
- Shared Subscriptions
- Extended authentication
- MQTT over WebSocket
- Clustering
Any compatible MQTT client library can be used to interact with the broker
- Java (eclipse/paho.mqtt.java)
- Go (eclipse/paho.golang)
- Other clients can be found here
The following are some features from the top of my head which I will work on
- Support for more transports such as WebSocket, gRPC, Rsocket(?)
- Support for clustering
- Authentication & extensible middleware
- Message Persistence
Fork it, give it a spin, and let me know!