I've had great success using Lamina for in-process message queues in lieu of futures, although this does nothing towards making your system distributed.
In process queues are a good abstraction, but that doesn't really protect you in case of your app crashing, which I think is the concern more than being distributed. I may be misunderstanding though.
Edit: I was already a big fan of SoundCloud, very pleased to find out they use Clojure.
I think the point was that it's hard to make something failure-tolerant without being distributed. A locally persisted queue would avoid certain failure modes, though.