celix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From e...@jansman.eu
Subject Remote service transport system
Date Thu, 23 May 2013 09:38:55 GMT
Hello Everyone,

As said before I'm working on the transport system for the remote services
in Celix, Sadly I haven't had time to test and compare all the message
queue's I found during the research. I did compare ZeroMQ[1] with TCP and
UDP. I haven't finished the report on the research but the results show
ZeroMQ and TCP performing almost identical on Latency and Throughput.

Having finished testing the time has come to implement a system in Celix.
I would like to implement ZeroMQ as a transport service but there is a
license conflict since ZeroMQ is licensed under LGPL v3 which is on the
category-x[6] list. Would it be possible to add a dependency on ZeroMQ?

Other options to build the transport service with would be:
-Apache ActiveMQ[2]
-Apache Qpid[3]
-Apache Qpid-Proton[4]
-RabbitMQ[5]
-TCP

Apache ActiveMQ:
   Build in Java
   Openwire and Stomp clients in C
   based on AMQP 1.0
   Bindings available for 17 languages

Apache QPid:
   Build in C++ and Java
   Based on AMQP 1.0
   Bindings available in a few languages

Apache Qpid-Proton:
   Build in C and Java
   Based on AMQP 1.0
   Bindings available in a few languages

RabbitMQ:
   Build in Erlang
   Based on AMQP 0-9-1
   Bindings for a 20+ languages
   License: MOZILLA PUBLIC LICENSE Version 1.1 [7]

TCP:
   No dependency's on other systems and projects
   Reliable
   Quite fast

Every system except TCP has a broker which could be useful for monitoring
and administration of queue's. Based on what I have seen on the internet
RabbitMQ would be the most active and stable system to use.

I'm unsure which system to choose. On of the Apache projects but apart
from Qpid-proton they all introduce a Java Broker. Qpid-proton seems to
have little with three commiters on the github repository. RabbitMQ has a
broker build in Erlang and doesn't use the last version of AMQP which
might be a problem when trying to connect to a system using AMQP 1.0.

TCP on the other hand is also an option. It doesn't add any dependency's.
It might be a little more complex to set up the connections for the remote
services but this can be solved.

So to summarize: What Transport system should I implement? ZeroMQ and
introduce a dependency and maybe a legal issue. A message queue system
from the list above? Or build it in TCP?

Regards,

Erik Jansman

1:http://www.zeromq.org/
2:http://activemq.apache.org/
3:http://qpid.apache.org/
4:http://qpid.apache.org/proton/
5:https://rabbitmq.com/
6:http://www.apache.org/legal/resolved.html#category-x
7:https://rabbitmq.com/mpl.html



Mime
View raw message