On Tue, Aug 25, 2009 at 9:20 PM, Dave Smith<d...@thesmithfam.org> wrote:
> I have looked at AMQP, specifically OpenAMQ, and found its ramp-up
> time unacceptable and its documentation awkward. Further, it feels
> like overkill for the simple style of communication that I want. I'm
> looking for something that aims to achieve similar goals as AMQP, but
> with a much simpler implementation.

Most of my AMQP looking was at RabbitMQ, which seems to have a lot
more features (and complexity) than OpenAMQ, but I'm not aware of
anything that sounds like what you want, so you may have to deal with
some complexity or roll your own.

> Yes, this question came up about a year ago, and XMPP and IRC were
> considered. I never really pursued those options further because I'm
> somewhat opposed to having a central "broker" (for lack of a better
> word) that acts as a single point of failure, and adds complexity for
> routing messages to and from the pieces of my distributed system.

Although you could consider a message broker a central point of
failure, you could also consider it a source of added reliability,
since it can queue messages when clients go temporarily offline due to
a failure.  Furthermore, you can generally add a redundant broker that
can take over if the original dies.  This does add complexity, but
generally the messaging middleware takes care of that in the same way
that a DBMS makes its redundancy features transparent to clients.

> The one thought that occurred to me was to have each component run a
> web server. When one component wants to send a message to another
> component, the sender would just send an HTTP POST request to the
> receiver. Likewise, if one component wants to query data from another
> component, the querier would send an HTTP GET to the queryee. That
> seems like it would work well, but HTTP has a bit too much overhead
> for me, as many of these messages will be very small, and components
> will need to respond to them very quickly. I guess this would be a web-
> services-based SOA.

Assuming you don't really need to communicate with real HTTP clients,
you could easily roll your own HTTP-lite to get and put messages
between nodes.  Depending on the language you're using, there may
already be some library for lightweight message passing.  Scala has
this built into the standard library, and the whole Erlang language is
built around the idea, so you could look to them for inspiration.

        --Levi

/*
PLUG: http://plug.org, #utah on irc.freenode.net
Unsubscribe: http://plug.org/mailman/options/plug
Don't fear the penguin.
*/

Reply via email to