Coder Social home page Coder Social logo

donaldlee2008 / mithqtt Goto Github PK

View Code? Open in Web Editor NEW

This project forked from longkerdandy/mithqtt

0.0 3.0 0.0 1.73 MB

MQTT Message Broker with Scalability written in Java

Home Page: https://mithqtt.readme.io/

License: Apache License 2.0

Java 100.00%

mithqtt's Introduction

Mithqtt

MQTT Message Broker with Scalability written in Java.

Build Status License Join the chat at https://gitter.im/longkerdandy/mithril-mqtt

User Guide

See full documentation at https://mithqtt.readme.io/

What is MQTT

MQTT is a machine-to-machine (M2M)/"Internet of Things" connectivity protocol. It was designed as an extremely lightweight publish/subscribe messaging transport. It is useful for connections with remote locations where a small code footprint is required and/or network bandwidth is at a premium.

What is Mithqtt

Mithqtt is an open source, distributed MQTT message broker for real world. It embraces the Microservices Architecture, and designed to fit into complex server-side application.

As a MQTT message broker, Mithqtt scales both horizontally and vertically on commodity hardware to support a large number of concurrent MQTT clients while maintaing low latency and fault tolerence.

As a Microservice, Mithqtt is small self contained with little external dependencies, expose interface through Cluster and HTTP to other microservices.

Features

  • Fully compatible with MQTT v3.1.1 specification.
    • Support QoS 0, QoS 1, QoS 2.
    • Support session state and clean session.
    • Support session keepalive.
    • Support message delivery retry (when connect).
    • Support retain message.
    • Support topic name and topic filter (with wildcards).
    • Strong message ordering for each session.
  • Authentication and Authorization on Connect Publish Subscribe.
  • Distributed, decentralized, high availability. Eventually consistent on node state.
  • Redis based storage (support 2.8 and 3.0).
  • NATS based cluster implementation.
  • RESTful HTTP interface.

Architecture

This is the high level architecture design of Mithqtt and its integration with server side applications.

Mithqtt Architecture

Interoperability Test

Mithqtt broker is tested against MQTT Conformance/Interoperability Testing.

Test result:

$ python client_test.py -z -d -s
hostname localhost port 1883
clean up starting
clean up finished
Basic test starting
Basic test succeeded
Retained message test starting
Retained message test succeeded
This server is not queueing QoS 0 messages for offline clients
Offline message queueing test succeeded
Will message test succeeded
Overlapping subscriptions test starting
This server is publishing one message for all matching overlapping subscriptions, not one for each.
Overlapping subscriptions test succeeded
Keepalive test starting
Keepalive test succeeded
Redelivery on reconnect test starting
Redelivery on reconnect test succeeded
Zero length clientid test starting
Zero length clientid test succeeded
Subscribe failure test starting
Subscribe failure test succeeded
$ topics test starting
$ topics test succeeded
test suite succeeded

mithqtt's People

Contributors

gitter-badger avatar longkerdandy avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.