[rabbitmq-discuss] Publish won't work without transaction?

Matthias Radestock 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 mailing list