[openamq-dev] Named & Persistent Queue Status

Pieter Hintjens ph at imatix.com
Mon Nov 19 20:06:15 CET 2007


On Nov 19, 2007 4:09 PM, Matthew Alton <simplicissimus at gmail.com> wrote:

> What was I talking about?  Yes, the library.  If you would be so very good
> as to provide me with a definitive description of the method of implementing
> persistent queues using OpenAMQ, I will write a library and a tutorial.

To be honest, implementing persistent queues is not impossible, just
tedious.  You need to:

- learn our XML class frameworks
- learn how the AMQP/0-9 acknowledgment and transaction model works
- write a generalised storage layer
- modify the queue classes to use that layer
- implement the AMQP methods for acknowledging messages and for transactions

And you would still get a reliability that could not survive server
failover, and which would not scale if you federate servers into
larger networks.

All in all, it seems a lot of work for little return.

Let me propose a truly impossible way to get reliability.  Consider
OpenAMQ to be a very rapid delivery service for building distributed
applications.  Note that we can shift tens of thousands of messages
per second with latencies of half a millisecond or better.

Now, consider "MQ-series reliability" to be a distributed application
in which end-user apps talk to a reliable broker across an AMQP
network.  That is, you can build the following:

a. a user-level broker that handles MQ-series style reliable queues
b. a message syntax that lets you publish to and consume from reliable queues
c. an API that looks indecently like a simplified MQ-series API

Your reliable queue broker sits outside OpenAMQ, perhaps on a separate
box sitting on a nice reliable disk system.  It handles a set of
queues in user space, i.e. at the level above OpenAMQ queues.  It
works on a message syntax that is in user-space, i.e. forms part of
the opaque body delivered by OpenAMQ.

Of course this is totally impossible. :-)

-
Pieter


More information about the openamq-dev mailing list