OpenStack has had this as a common design pattern across a lot of the services for a while.
It works quite well for us now - there was a period 2-3 years ago where rabbitmq was the bane of my existence, and the cause of many a page but newer versions have been fine.
We do assume that everything in the queue can go away, and only in flight calls will fail - and (at least in the service I work on) we do retries if something falls through the cracks.
Yes, I have worked with the OpenStack messaging queue, and its really amazing how it just works. Also, easy to grab analytics about service usage by querying the queue directly, is amazing.
It works quite well for us now - there was a period 2-3 years ago where rabbitmq was the bane of my existence, and the cause of many a page but newer versions have been fine.
We do assume that everything in the queue can go away, and only in flight calls will fail - and (at least in the service I work on) we do retries if something falls through the cracks.
There is a shared library we use for it - http://docs.openstack.org/developer/oslo.messaging/
It also has drivers for ZMQ, and QPID afaik.