[rabbitmq-discuss] RPC across Federation
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
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the rabbitmq-discuss