VerneMQ is a high-performance, distributed MQTT message broker. It scales horizontally and vertically on commodity hardware to support a high number of concurrent publishers and consumers while maintaining low latency and fault tolerance. VerneMQ is the reliable message hub for your IoT platform or smart products.
VerneMQ is an Apache2 licensed distributed MQTT broker, developed in Erlang.
MQTT used to stand for MQ Telemetry Transport, but it no longer is an acronym. It is an extremely simple and lightweight publish/subscribe messaging protocol, that was invented at IBM and Arcom (now Eurotech) to connect restricted devices in low bandwidth, high-latency or unreliable networks.
VerneMQ implements the MQTT 3.1 and 3.1.1 specifications, integration of MQTT-SN is planned. Currently the following features are implemented:
- QoS 0, QoS 1, QoS 2
- Basic Authentication and Authorization
- Bridge Support
- $SYS Tree for monitoring and reporting
- TLS (SSL) Encryption
- Websockets Support
- Cluster Support
- SNMP Monitoring
- Logging (Console, Files, Syslog)
- Reporting to Graphite
- Extensible Plugin architecture
- Multiple Sessions per ClientId
- Session Balancing
- Message load regulation
- Message load shedding (for system protection)
- Offline Message Storage (based on LevelDB)
- Queue can handle messages FIFO or LIFO style.
- MongoDB integration (via. vmq_diversity)
- Redis integration (via. vmq_diversity)
- MySQL integration (via. vmq_diversity)
- PostgreSQL integration (via. vmq_diversity)
- Memcached integration (via. vmq_diversity)
- Webhooks (via. vmq_diversity)
Below you'll find a basic introduction to building and starting VerneMQ. For more information about the binary package installation, configuration, and administration of VerneMQ, please visit our documentation at VerneMQ Documentation or checkout the product page VerneMQ if you require more information on the available commercial support options.
This section assumes that you have a copy of the VerneMQ source tree. To get started, you need to first build VerneMQ.
Note: VerneMQ requires Erlang 17.x or 18.x to be installed on your system.
Assuming you have a working Erlang installation, building VerneMQ should be as simple as:
$ cd $VERNEMQ
$ make rel
Once you've successfully built VerneMQ, you can start the server with the following commands:
$ cd $VERNEMQ/_build/default/rel/vernemq
$ bin/vernemq start
Note that the $VERNEMQ/_build/default/rel/vernemq
directory is a complete,
self-contained instance of VerneMQ and Erlang. It is strongly suggested that you
move this directory outside the source tree if you plan to run a production
instance.
The VerneMQ project (this repository) is an umbrella for multiple subrepos. Most of them are automatically included as a build dependency during the build. Others are not part of the official release package, but are officially supported and require to be downloaded and built separately.
Subproject | Description | Build Status | Included |
---|---|---|---|
vmq_server | The VerneMQ core | yes | |
vmq_commons | Common functionality, e.g. MQTT parser | yes | |
vmq_plugin | The Plugin framework | yes | |
vmq_acl | ACL authorization plugin | yes | |
vmq_passwd | Password file based authentication plugin | yes | |
vmq_bridge | Bridge VerneMQ with other MQTT brokers | yes | |
vmq_diversity | Implement VerneMQ plugins using Lua | no | |
vmq_webhooks | Let VerneMQ call your HTTP endpoints | no | |
- #vernemq on freenode IRC
- VerneMQ User Mailing List
- VerneMQ Documentation
- Follow us on Twitter (@vernemq)!