Welcome to the Gojek VerneMQ documentation! This project is a fork of the awesome ❤️ MQTT broker of the same name. We want to add some functionalities that we think can be useful for specific use-cases. This is a reference guide for most of the available features and options of VerneMQ. The Getting Started guide might be a good entry point.
Courier, Gojek's MQTT based persistent connections stack, uses VerneMQ as its MQTT broker. When using VerneMQ(v1.11.0) at scale our team faced numerous problems which hindered the availability, reliability and durability of the system.
Our latest blog lists all the problems and its solution in detail.
Make the broker cluster stateless by moving the state out of the cluster.
In order to achieve our goal, we have added the following features over the core VerneMQ (1.11.0) features. These features have been added as a result of few drawbacks that we felt should be addressed better.
- Message passing amongst the cluster nodes is done via redis
- Store only offline messages instead of all the messages
- An option to disable persistence using no-op engine
- Connection and subscription related client data is now stored in redis
- JWT based authentication and token based ACL
- Events sidecar plugin using tcp
The VerneMQ Documentation project is an open-source effort, and your contributions are very welcome and appreciated. You can contribute on all levels:
- Language, style and typos
- Fixing obvious documentation errors and gaps
- Providing more details and/or examples for specific topics
- Extending the documentation where you find this useful to do