VerneMQ
  • Welcome
  • Getting Started
  • MQTT Introduction
  • Installing VerneMQ
    • Running VerneMQ using Docker
  • Configuring VerneMQ
    • Introduction
    • The VerneMQ conf file
    • Auth using files
    • Auth using a database
    • Enhanced Auth
    • MQTT Options
    • MQTT Listeners
    • HTTP Listeners
    • Non-standard MQTT options
    • Websockets
    • Logging
    • Consumer session balancing
    • Plugins
    • Shared subscriptions
    • Advanced Options
    • Storage
    • No Op Engine
    • Generic offline store
    • Redis based message passing
    • Redis based subscription store
    • MQTT Bridge
  • VerneMQ Clustering
    • Introduction
    • Inter-node Communication
    • Dealing with Netsplits
  • Live Administration
    • Introduction
    • Inspecting and managing sessions
    • Retained messages
    • Live reconfiguration
    • Managing Listeners
    • HTTP API
    • Tracing
  • Monitoring
    • Introduction
    • $SYSTree
    • Graphite
    • Netdata
    • Prometheus
    • Health Checker
    • Status Page
  • Plugin Development
    • Introduction
    • Session lifecycle
    • Subscribe Flow
    • Publish Flow
    • Enhanced Auth Flow
    • Erlang Boilerplate
    • Lua Scripting Support
    • Webhooks
    • Events sidecar Plugin
  • Misc
    • Loadtesting VerneMQ
    • Not a tuning guide
    • Change Open File Limits
  • Guides
    • A typical VerneMQ deployment
    • VerneMQ on Kubernetes
    • Loadtesting VerneMQ
    • Clustering during development
    • Not a tuning guide
    • Change Open File Limits
Powered by GitBook
On this page
  • Motivation of this fork
  • Goal of this fork
  • Summary of primary additions over core VerneMQ (1.11.0)
  • How to help improve this documentation

Welcome

NextGetting Started

Last updated 2 years ago

Welcome to the Gojek VerneMQ documentation! This project is a fork of the awesome ❤️ 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 might be a good entry point.

Motivation of this fork

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 lists all the problems and its solution in detail.

Goal of this fork

Make the broker cluster stateless by moving the state out of the cluster.

Summary of primary additions over core VerneMQ (1.11.0)

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.

How to help improve this documentation

  • 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

The is an open-source effort, and your contributions are very welcome and appreciated. You can contribute on all levels:

MQTT broker
Getting Started guide
blog
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
VerneMQ Documentation project