Op 23-5-2013 11:38, [email protected] schreef:
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?
Hello Erik,

The following site: http://www.apache.org/legal/3party.html#criteriaandcategories clearly indicates that LGPL is not allowed. Apache simply does not want that users of an
Apache project have to fulfill other license restrictions.
For clearity: glibc is LGPL not GPL.

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?
So, I think TCP is the only alternative. As soon as a plug-in system as proposed by Alexander is realised it might by possible to write an (example) plugin with ZeroMQ that can be kept outside the Celix framework (outside the Apache license).


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



Reply via email to