[rabbitmq-discuss] RPC across Federation

Josh West jsw at one.com
Thu Jan 16 22:09:55 GMT 2014

So, I seem to have encountered a limitation with Federation.  This is 
with regards to how bindings of exchanges/queues are propagated 
asynchronously, thus leading to the possibility of a race condition.

If you take the example outlined in Tutorial Six ( 
http://www.rabbitmq.com/tutorials/tutorial-six-python.html), and modify 
the code so that exchanges are used, you can get RPC requests and 
responses to traverse federated links.  In this example, the rpc_client 
creates a temporary callback queue and attaches the address of that 
queue to the message as a reply_to property.  Once the rpc_server 
receives the message and calculates the Fibonacci number, it sends the 
response back via a new message to the reply_to address...

Ok. This is all simple basic stuff to this point.

The problem lies in when the rpc_client creates it's temporary callback 
queue.  There is a race condition in which the rpc_client may move on by 
then sending the fib(n) message, the rpc_server receives + calculates 
the Fibonacci number, and then sends a response to the rpc_client's 
callback queue specified in props.reply_to -- all before the Federation 
plugin has propagated the binding of the callback queue to the exchange 
and other federated exchanges.  Thus, the response message gets 

Has anybody else experienced an issue like this?  Does anybody have 
suggestions as to how to properly provide RPC functionality across 
federated exchanges?


Josh West
One.com -http://www.one.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20140116/5bc69177/attachment.html>

More information about the rabbitmq-discuss mailing list