Hi Pamod,

Great Work!! Let us release a light version of MQTT with current
implementation+ possible issue fixes + critical security fixes with MB
3.0.0 release and then build on top of that.

Let us have a discussion on the $subject tomorrow.

Thanks.


On Mon, May 5, 2014 at 8:28 PM, Pamod Sylvester <[email protected]> wrote:

> Hi All,
>
> Following describes the current state/implementation of MQTT transport
> integrated into the MB,
>
> We use the moquette MQTT library as the protocol engine which could be
> found in [1], which will accept and establish connections between MQTT
> subscribers and publishers. MQTT has mainly three levels of QOS which are
> 0,1,2.
>
> QOS 0 level would be similar to fire and forget scenario where the
> acknowledgments will not be expected, also messages will not be ensured to
> delivered 100%, this level of QOS is performance friendly in comparison to
> other QOS levels but less reliable. QOS 1 would be a more guaranteed
> delivery approach, where it will ensure to retry if an acknowledgment
> doesn't arrive. but messages could be duplicated. QOS2 will ensure that the
> message is delivered only once.
>
> Current revision of MB 3.0.0 will accept and deliver MQTT messages in all
> three QOS levels when running in the stand-alone mode. Also will support
> MQTT messages in QOS level 0 in the clustered mode. The listed below are
> some of the main classes which can be used as a reference,
>
> 1) Initialization of the server opening of ports done through the Main
> class startMQTTBroker() method. This will open up a connection through a
> Netty server where the connection will be NIO
> 2) When a message arrives the generalized flow of events would be
> performed through the following classes (in summery),
>     ConnectDecoder -> NettyMQTTHandler -> ProtocolProcessor.
> 3) NettyMQTTHandler class would basically evaluate each message and
> delegate it to ProtocolProcessor as events ( ex :-
> subscribe/unsubscribe/publish) each events would be placed in a distruptor
> ring.
> 4) ProtocolProcessor also maintains the subscriber channels. When message
> is published the relevant subscribers will be notified through placing the
> outcome also to distruptor ring, this way both the inbound and outbound
> events will be handled though distruptor.
> 5) All the methods which are interfaced between the Andes Kernal and MQTT
> library are in the class AndesBridge.
> 6) MQTTChannel class would basically handle between the data
> insertion/removal to/from Cassandra queue.
>
> Also note that per topic only one Andes level LocalSubscription will be
> created, when the LocalSubscription class is notified of events it will
> pass it to the library to notify the relevant subscribers. MB was tested
> against the test suite in [2] which almost covers all the protocol level
> validations. The test reports indicated failure in cases which involved
> topics with WildCard characters. The issue was due to the Andes Kernal not
> interpreting the characters properly, however there's a fix which was done
> in the MB 2.2.0 version which need to be ported to 3.0.0.
>
> To-Dos in terms of MQTT/MB integration
>
> #  Need to address QOS levels 1 and 2 for the clustered environment.
> Currently its handled through using an in-memory DB for persistence.
> Ideally a hybrid approach of having both the in-memory and Cassandra would
> allow a performance gain
> # Support topics with WildCard characters (this will be fixed once the
> patch of 2.2.0 is ported to 3.0.0)
> # Handling topics with clean session (durable subscriptions in terms of
> AMQP). This needs to be discussed and handled in a common way for both MQTT
> and AMQP.
> # Integrating of users/role management policies applicable for MQTT.
> Currently username and password is retrieved from a configuration file.
> # Need to test MQTT cluster wide.
>
> [1] https://code.google.com/p/moquette-mqtt/
> [2] http://wiki.eclipse.org/File:Mqtt-test.zip
>
> Thanks,
> Pamod
> --
> *Pamod Sylvester *
>  *Senior Software Engineer *
> Integration Technologies Team, WSO2 Inc.; http://wso2.com
> email: [email protected] cell: +94 77 7779495
>



-- 
*Hasitha Abeykoon*
Senior Software Engineer; WSO2, Inc.; http://wso2.com
*cell:* *+94 719363063*
*blog: **abeykoon.blogspot.com* <http://abeykoon.blogspot.com>
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to