[rabbitmq-discuss] [BUG] Erlang RabbitMQ client requires installed server code
Matthias Radestock
matthias at lshift.net
Sun Sep 7 09:51:33 BST 2008
Edwin,
Edwin Fine wrote:
> A network client should not require server code to be installed on the
> same node. This is certainly true of other clients I have used.
Bear in mind that the Erlang client code base can operate in both direct
and networked mode. For the former you definitely need a server.
> I respectfully suggest that the above RabbitMQ server modules, and their
> dependencies, be bundled with the Erlang client. Ideally, I would think
> it would be best perhaps to put them a separate Erlang library
> application (maybe "rabbitmq_common") that is used both by the server
> and the Erlang client.
The above is on our todo list. Refactoring the code is the easy part.
The challenges are in:
- updating the module structure of the VCS - is rabbitmq_common going to
be a separate HG module?
- figuring out how rabbitmq_common will be distributed. This can be a
combination of all of the following: a) separately, b) as part of the
Erlang client and server source packages, c) as part of the Erlang
client and server binary packages. Then there also the Debian and RPM
packages to consider - are we going to have a separate packages for
rabbitmq_common or will it be bundled with the existing packages?
Depending on the above choices a significant amount of work needs to be
put into revising the build system, the packaging system, our automated
deployment system, the documentation, and parts of the web site.
That's why it hasn't happened yet.
> Further to my previous email, a minimal list of required modules for
> the proposed "rabbit_common" application are listed below (these are
> the ones I needed to get things up and running). I am going to make
> my own rabbit_common OTP application, and change the Erlang client to
> depend on it rather than the server. I will also see what it takes to
> change the rabbit 1.4.0 server itself to factor out the common code
> and to use this rabbit_common application. Perhaps I can use Dialyzer
> to ensure that I get all dependencies. If this would be of interest I
> would be glad to share it.
We definitely appreciate your help in this. Please give the above points
some thought. Also, rather than basing your work on 1.4.0, I'd suggest
working off the current 'default' branches in hg.
Some comments on the list of files you came up with:
> src/rabbit_misc.erl
This should probably be split into the truly common part, the server
part and the client part.
> include/rabbit.hrl
Ditto, though this is less important.
> src/rabbit_amqqueue.erl
> src/rabbit_channel.erl
These should not be required since they are only used by the direct client.
Regards,
Matthias.
More information about the rabbitmq-discuss
mailing list