Thanks for all the answers. It sounds like I can't quite achieve what I want out of the box. (Which is not a surprise)
I'll have a look at the internal code and see how hard it will be to build something custom that is basically a combination of a small non-persistent in-memory queue, and a larger on-disk persistent queue. Any ideas where to start looking in the codebase?