[rabbitmq-discuss] Publish won't work without transaction?
matthias at lshift.net
Wed Sep 24 05:29:45 BST 2008
Ben Hood wrote:
> We want pluggable queues for a variety of use cases, and one
> particular one is to be able to cleanly implement disk overflow
> without hacking too much on the core of Rabbit. We try to reduce the
> server codebase to a minimum.
Our queue implementation constitutes a substantial part of the current
code base, which is not surprising really, given that we are
implementing the Advanced Message *Queueing* Protocol.
There is quite a lot of functionality a fully-functioning AMQP queue
needs to implement, and a lot of fiddly details to get right.
So while pluggable queues will allow one to implement different queue
behaviours without having to hack on the server code base, they by no
means make that task easy.
And for most of the "pluggable queues will fix this" items we have
discussed so far, pluggable queues are actually only a small part of the
answer. That's because in most cases we are talking about tweaks to some
aspects of queue behaviour, with the rest remaining the same. How would
one accomplish this with pluggability alone? Write all the current
behaviour from scratch? Not good. Copy&paste the current implementation
(after it's been changed to conform to the plugin interface), and then
modify it? That's bad too.
The proper way to do this would be to refactor the queue implementation
such that it becomes more modular *internally*. The end result would be
a set of building blocks allowing one to construct a queue plugin.
That's a lot of work though.
More information about the rabbitmq-discuss