Hi Devs,

I have now introduced support for AMQP in messaging component together with
MQTT. To do this I have generalized event publisher and subscriber creation
process by introducing factory classes.

The main reason for doing this change is that I wanted to implement an
automated integration test which could start an ActiveMQ instance (using
ActiveMQ embedded server) and a Stratos server instance and run sample
applications against Mock IaaS. However as I found ActiveMQ embedded server
does not support MQTT transport out of the box however it seems to work
with AMQP.

One of the other reasons is that, during past months most of us noticed an
instability behaviour in MQTT. Once the Stratos server is run for several
hours the connection to the message broker drops.

Another important reason is that MQTT requires each client to specify a
globally unique ID. We managed to solve this by generating a random number.
A UUID is much larger than the limit specified by MQTT. This is not a
proper way of handling a Client ID in a distributed environment.

Now with this change, the default messaging transport has been set to AMQP
and it can be changed by setting the following system property:

messaging.transport=mqtt|amqp

Thanks




-- 
Imesh Gunaratne

Technical Lead, WSO2
Committer & PMC Member, Apache Stratos

Reply via email to