subscribe and unsubscribe issues - Added unit tests to cover a few more cases which I my system ran into under concurrent load testing. - Remove and detect TNode, implement more of http://bravenewgeek.com/breaking-and-entering-lose-the-lock-while-embracing-concurrency/ related to TNode state - NOTE: The graph is left with nodes which have no subscriptions, the TNode cleanup only cleanss the last node for now. We should autoprune further up by placing more TNodes and pruning them off. - Adding concurrency Sets and Lists to CNode, because those ARE edited and read in parallel in our use-case. Before a CNode is CAS replaced, more than 1 thread may be attempting to modify and read the subscriptions and children CNode datastructures, and I hit this during testing. - Fixed an issue where we unsubscribe all sub-topics if an unsubscribe is sent on a parent node. - Fixed an issue with unsubscribing multiple times when no subscrition exists, we should handle this gracefully.
What is Moquette?
- [Documentation reference guide] (http://andsel.github.io/moquette/) Guide on how to use and configure Moquette
- [Google Group] (https://groups.google.com/forum/#!forum/moquette-mqtt) Google Group to participate in development discussions. Moquette aims to be a MQTT compliant broker. The broker supports QoS 0, QoS 1 and QoS 2.
Its designed to be evented, uses Netty for the protocol encoding and decoding part.
Embeddable
[Freedomotic] (http://www.freedomotic.com/) Is an home automation framework, uses Moquette embedded to interface with MQTT world. Moquette is also used into [Atomize Spin] (http://atomizesoftware.com/spin) a software solution for the logistic field. Part of moquette are used into the [Vertx MQTT module] (https://github.com/giovibal/vertx-mqtt-broker-mod), into MQTT spy and into [WSO2 Messge broker] (http://techexplosives-pamod.blogspot.it/2014/05/mqtt-transport-architecture-wso2-mb-3x.html).
Try the demo instance
Point your MQTT client to broker.moquette.io
1 minute set up
Start play with it, download the self distribution tar from BinTray , the un untar and start the broker listening on 1883 port and enjoy!
tar zxf distribution-0.10-bundle-tar.tar.gz
cd bin
./moquette.sh
Or if you are on Windows shell
cd bin
.\moquette.bat
Embedding in other projects
To embed Moquette in another maven project is sufficient to include a repository and declare the dependency:
<repositories>
<repository>
<id>bintray</id>
<url>https://jcenter.bintray.com</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
Include dependency in your project:
<dependency>
<groupId>io.moquette</groupId>
<artifactId>moquette-broker</artifactId>
<version>0.10</version>
</dependency>
Build from sources
After a git clone of the repository, cd into the cloned sources and: ./gradlew clean distribution:distMoquetteTar or
./gradlew clean distribution:distMoquetteZip.
In distribution/build directory will be produced the selfcontained file for the broker with all dependencies and a running script.