[rabbitmq-discuss] Exposing Erlang nodes/proceses through RabbitMQ

Garrett Smith g at rre.tt
Mon Mar 1 17:46:26 GMT 2010


I know that AMQP is all about language neutrality. That's all good.
I'm not trying to change that :)

But, a quick diversion into some Erlang specific topics...

Erlang has some really nice automagical network features (e.g. auto
replicated global process registries) that enable pretty seamless
distributed application development. I've found the stuff to be
incredibly cool and easy to use. But I've also run into some
limitations. These include practical limits on the number of connected
nodes (the network mesh Erlang sets up uses node_count * node_count -
1 connections), security issues (Erlang nodes want to run in a trusted
network), and the general complications of maintaining a peer-to-peer
network for longish running systems.

I think brokers are a natural next step in dealing with these issues.

Has there been any discussion (or coding efforts) on using rabbitmq as
an alternative "transport layer" (that's not the right term, but it's
close) for Erlang node-to-node communications? The pieces this entails
would include :

* Marshalling Erlang terms
* Global process registry (e.g. sync'd fanout)
* remote_process() ! term()
* rpc:xxx

The point of this would be to make transitioning to rabbitmq from a
standard Erlang mesh as seamless as possible. E.g. gen_server:call/2
would just work without much/any work for the developer.

The payoff would be (I think) a far more scalable architecture in
terms of supported nodes as well as the AMQP features (durability,
persistence, access control, etc.)

And in the spirit of AMQP's ecumenicalism, this scheme could be
applied to other languages, but I'm thinking specifically of Erlang at
the moment.

Garrett




More information about the rabbitmq-discuss mailing list