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