All Projects → moscajs → Aedes

moscajs / Aedes

Licence: mit
Barebone MQTT broker that can run on any stream server, the node way

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Aedes

Mqtt
MQTT broker written in D, using vibe.d
Stars: ✭ 59 (-94.14%)
Mutual labels:  mqtt, mqtt-broker, iot
Hivemq Community Edition
HiveMQ CE is a Java-based open source MQTT broker that fully supports MQTT 3.x and MQTT 5. It is the foundation of the HiveMQ Enterprise Connectivity and Messaging Platform
Stars: ✭ 562 (-44.19%)
Mutual labels:  mqtt, mqtt-broker, iot
Thingsboard Gateway
Open-source IoT Gateway - integrates devices connected to legacy and third-party systems with ThingsBoard IoT Platform using Modbus, CAN bus, BACnet, BLE, OPC-UA, MQTT, ODBC and REST protocols
Stars: ✭ 796 (-20.95%)
Mutual labels:  mqtt, mqtt-broker, iot
Mqtt Pwn
MQTT-PWN intends to be a one-stop-shop for IoT Broker penetration-testing and security assessment operations.
Stars: ✭ 156 (-84.51%)
Mutual labels:  mqtt, mqtt-broker, iot
Mqttnet
MQTTnet is a high performance .NET library for MQTT based communication. It provides a MQTT client and a MQTT server (broker). The implementation is based on the documentation from http://mqtt.org/.
Stars: ✭ 2,486 (+146.87%)
Mutual labels:  mqtt, mqtt-broker, iot
Mqtt Panel
A web interface for MQTT
Stars: ✭ 315 (-68.72%)
Mutual labels:  mqtt, mqtt-broker, iot
Openremote
100% open-source IoT Platform - Integrate your assets, create rules, and visualize your data
Stars: ✭ 254 (-74.78%)
Mutual labels:  mqtt, mqtt-broker, iot
Emqx
An Open-Source, Cloud-Native, Distributed MQTT Message Broker for IoT.
Stars: ✭ 8,951 (+788.88%)
Mutual labels:  mqtt, mqtt-broker, iot
Hbmqtt
MQTT client/broker using Python asynchronous I/O
Stars: ✭ 667 (-33.76%)
Mutual labels:  mqtt, mqtt-broker
Arduino Mqtt
MQTT library for Arduino
Stars: ✭ 685 (-31.98%)
Mutual labels:  mqtt, iot
Volantmq
High-Performance MQTT Server
Stars: ✭ 785 (-22.05%)
Mutual labels:  mqtt, iot
Inchat
一个轻量级、高效率的支持多端(应用与硬件Iot)的可分布式、异步网络应用通讯框架
Stars: ✭ 654 (-35.05%)
Mutual labels:  mqtt, iot
Convention
🏡 The Homie Convention: a lightweight MQTT convention for the IoT
Stars: ✭ 582 (-42.2%)
Mutual labels:  mqtt, iot
Mqtt.js
The MQTT client for Node.js and the browser
Stars: ✭ 6,723 (+567.63%)
Mutual labels:  mqtt, mqtt-broker
Paho.mqtt.embedded C
Paho MQTT C client library for embedded systems. Paho is an Eclipse IoT project (https://iot.eclipse.org/)
Stars: ✭ 887 (-11.92%)
Mutual labels:  mqtt, iot
Hassio Zigbee2mqtt
Hass.io add-on for zigbee2mqtt
Stars: ✭ 547 (-45.68%)
Mutual labels:  mqtt, iot
Sitewhere
SiteWhere is an industrial strength open-source application enablement platform for the Internet of Things (IoT). It provides a multi-tenant microservice-based infrastructure that includes device/asset management, data ingestion, big-data storage, and integration through a modern, scalable architecture. SiteWhere provides REST APIs for all system functionality. SiteWhere provides SDKs for many common device platforms including Android, iOS, Arduino, and any Java-capable platform such as Raspberry Pi rapidly accelerating the speed of innovation.
Stars: ✭ 788 (-21.75%)
Mutual labels:  mqtt, iot
Mpower Tools
Tools for operating Ubiquiti Networks mPower devices
Stars: ✭ 41 (-95.93%)
Mutual labels:  mqtt, iot
Mqtt
Native Go MQTT Library
Stars: ✭ 15 (-98.51%)
Mutual labels:  mqtt, iot
Rf24node msgproto
An application that runs on a Raspberry Pi that interfaces RF24Network packets to a Message Bus. Currently MQTT & AMQP (alpha); Topics are RF24SensorNet compatible.
Stars: ✭ 11 (-98.91%)
Mutual labels:  mqtt, iot

Aedes

ci js-standard-style Maintenance PRs Welcome
Total alerts Language grade: JavaScript Coverage Status Known Vulnerabilities
Dependencies Status devDependencies Status
node NPM version NPM downloads

opencollective

Barebone MQTT server that can run on any stream servers

Install

To install aedes, simply use npm:

npm install aedes

Docker

Check Docker docs here

API

Features

  • Full compatible with MQTT 3.1 and 3.1.1
  • Standard TCP Support
  • SSL / TLS
  • WebSocket Support
  • Message Persistence
  • Automatic Reconnect
  • Offline Buffering
  • Backpress-support API
  • High Availability
  • Clusterable
  • Authentication and Authorization
  • $SYS support
  • Pluggable middlewares
  • Dynamic Topics Support
  • MQTT Bridge Support between aedes
  • MQTT 5.0 (not support yet)
  • Bridge Protocol (incoming connections only)

Examples

Clusters

Aedes needs on disk dbs like MongoDB and Redis in order to work with clusters. Based on our tests and users reports the best performances/stability are reached when using aedes-persistence-mongodb paired with mqemitter-redis.

Other info:

  • The repo aedes-tests is used to test aedes with clusters and different emitters/persistences. Check its source code to have a starting point on how to work with clusters

Bridge connections

Normally, when publishing a message, the retain flag is consumed by Aedes and then set to false. This is done for two reasons:

  • MQTT-3.3.1-9 states that it MUST set the RETAIN flag to 0 when a PUBLISH Packet is sent to a Client because it matches an established subscription regardless of how the flag was set in the message it received.
  • When operating as a cluster, only one Aedes node may store the packet

Brokers that support the Bridge Protocol can connect to Aedes. When connecting with this special protocol, subscriptions work as usual except that the retain flag in the packet is propagated as-is.

Exensions

Middleware Plugins

Persistence

MQEmitter

Acknowledgements

This library is born after a lot of discussion with all Mosca users and how that was deployed in production. This addresses your concerns about performance and stability.

Mosca vs Aedes

Example benchmark test with 1000 clients sending 5000 QoS 1 messsages. Used mqtt-benchmark with command:

mqtt-benchmark --broker tcp://localhost:1883 --clients 1000 --qos 1 --count 5000

CPU INFO:

Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              8
On-line CPU(s) list: 0-7
Thread(s) per core:  2
Core(s) per socket:  4
Socket(s):           1
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               94
Model name:          Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
Stepping:            3
CPU MHz:             800.014
CPU max MHz:         3500,0000
CPU min MHz:         800,0000
BogoMIPS:            5199.98
Virtualization:      VT-x
L1d cache:           32K
L1i cache:           32K
L2 cache:            256K
L3 cache:            6144K

Benchmark: Aedes

In memory - No clusters

========= TOTAL (1000) =========
Total Ratio:                 1.000 (5000000/5000000)
Total Runtime (sec):         178.495
Average Runtime (sec):       177.845
Msg time min (ms):           0.077
Msg time max (ms):           199.805
Msg time mean mean (ms):     35.403
Msg time mean std (ms):      0.042
Average Bandwidth (msg/sec): 28.115
Total Bandwidth (msg/sec):   28114.678

Redis Persistence and Redis Emitter - With Clusters

========= TOTAL (1000) =========
Total Ratio:                 1.000 (5000000/5000000)
Total Runtime (sec):         114.404
Average Runtime (sec):       109.022
Msg time min (ms):           0.065
Msg time max (ms):           393.214
Msg time mean mean (ms):     21.520
Msg time mean std (ms):      0.595
Average Bandwidth (msg/sec): 45.896
Total Bandwidth (msg/sec):   45896.306

Mongo Persistence and Redis Emitter - With Clusters

========= TOTAL (1000) =========
Total Ratio:                 1.000 (5000000/5000000)
Total Runtime (sec):         112.769
Average Runtime (sec):       105.524
Msg time min (ms):           0.062
Msg time max (ms):           329.062
Msg time mean mean (ms):     20.750
Msg time mean std (ms):      0.878
Average Bandwidth (msg/sec): 47.464
Total Bandwidth (msg/sec):   47464.271

Redis Persistence and Mongodb Emitter - With Clusters

========= TOTAL (1000) =========
Total Ratio:                 1.000 (5000000/5000000)
Total Runtime (sec):         118.587
Average Runtime (sec):       114.190
Msg time min (ms):           0.080
Msg time max (ms):           324.028
Msg time mean mean (ms):     22.558
Msg time mean std (ms):      0.730
Average Bandwidth (msg/sec): 43.832
Total Bandwidth (msg/sec):   43831.927

Benchmark: Mosca

========= TOTAL (1000) =========
Total Ratio:                 1.000 (5000000/5000000)
Total Runtime (sec):         264.934
Average Runtime (sec):       264.190
Msg time min (ms):           0.070
Msg time max (ms):           168.116
Msg time mean mean (ms):     52.629
Msg time mean std (ms):      0.074
Average Bandwidth (msg/sec): 18.926
Total Bandwidth (msg/sec):   18925.942

Made with Aedes

Here is a list of some interesting projects that are using Aedes as MQTT Broker. Submit a PR or an issue if you would like to add yours

  • node-red-contrib-aedes: MQTT broker for Node-Red based on Aedes
  • Mqtt2Mqtt: Mqtt Bridge between two brokers with UI
  • Kuzzle: High performance and full featured IoT backend using MQTT alongside WebSocket and Http protocols

Collaborators

Contribution

Help wanted Contributors

Want to contribute? Check our list of features/bugs

Support

If there are bugs/leaks in production scenarios, we encourage people to send Pull Request and/or reach out maintainers for some paid support.

Backers

Thank you to all our backers! 🙌

Backers

Sponsors

Become a sponsor to get your logo on our README on Github

Sponsor

License

Licensed under MIT.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].