Integration / RabbitMQ Interview Questions
How do you implement RPC pattern with RabbitMQ?
RabbitMQ can emulate request/response (RPC) even though it is fundamentally an asynchronous system, using two message properties: reply_to and correlation_id.
- The client declares a private, typically exclusive, reply queue and starts consuming from it.
- The client publishes the request, setting
reply_toto that queue's name andcorrelation_idto a unique value it generates. - The server processes the request and publishes the response directly to the queue named in
reply_to, copying the samecorrelation_idback. - The client matches the incoming response to its original request using the
correlation_id, since multiple in-flight requests can share the same reply queue.
props = pika.BasicProperties(reply_to=callback_queue, correlation_id=corr_id) channel.basic_publish(exchange='', routing_key='rpc_queue', properties=props, body=request)
This pattern trades true RPC latency for the resilience of a message broker, so it suits cases where decoupling and retries matter more than raw round-trip speed.
More Related questions...