Bird
Raised Fist0
RabbitMQdevops~10 mins

RPC vs direct API calls in RabbitMQ - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to send a message to the queue named 'task_queue'.

RabbitMQ
channel.basic_publish(exchange='', routing_key='[1]', body='Hello World!')
Drag options to blanks, or click blank then click option'
Atask_queue
Brpc_queue
Capi_queue
Dresponse_queue
Attempts:
3 left
💡 Hint
Common Mistakes
Using the wrong queue name in routing_key
Confusing exchange with routing_key
2fill in blank
medium

Complete the code to declare a queue for RPC server to listen on.

RabbitMQ
channel.queue_declare(queue='[1]')
Drag options to blanks, or click blank then click option'
Atask_queue
Brpc_queue
Capi_queue
Dcallback_queue
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'task_queue' instead of 'rpc_queue'
Confusing callback queue with server queue
3fill in blank
hard

Fix the error in the code to send an RPC request with a unique correlation id.

RabbitMQ
channel.basic_publish(exchange='', routing_key='rpc_queue', properties=pika.BasicProperties(correlation_id=[1]), body='Request')
Drag options to blanks, or click blank then click option'
A'corr_id_1'
B'12345'
C12345
DNone
Attempts:
3 left
💡 Hint
Common Mistakes
Using an integer instead of a string for correlation_id
Passing None as correlation_id
4fill in blank
hard

Fill both blanks to create a dictionary comprehension that filters messages with a correlation id matching the request.

RabbitMQ
responses = {k: v for k, v in messages.items() if k [1] request_id and v [2] 'done'}
Drag options to blanks, or click blank then click option'
A==
B!=
Attempts:
3 left
💡 Hint
Common Mistakes
Using '!=' instead of '=='
Mixing operators incorrectly
5fill in blank
hard

Fill all three blanks to create a dictionary comprehension that maps request IDs to their responses if the response status is 'success'.

RabbitMQ
result = [1]: [2] for [3] in responses.items() if v == 'success'
Drag options to blanks, or click blank then click option'
Areq_id
Bresp
Creq_id, v
Dv
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing key and value names
Incorrect unpacking of items
Using wrong variable names

Practice

(1/5)
1. What is a key difference between RabbitMQ RPC and direct API calls?
easy
A. RPC uses message queues to communicate asynchronously, while direct API calls use HTTP requests synchronously.
B. RPC requires a web browser, but direct API calls do not.
C. Direct API calls always use message queues, but RPC uses HTTP.
D. RPC is only used for database queries, direct API calls are for UI updates.

Solution

  1. Step 1: Understand communication methods

    RPC in RabbitMQ uses message queues to send and receive messages asynchronously between services.
  2. Step 2: Compare with direct API calls

    Direct API calls typically use HTTP requests for immediate, synchronous communication between client and server.
  3. Final Answer:

    RPC uses message queues to communicate asynchronously, while direct API calls use HTTP requests synchronously. -> Option A
  4. Quick Check:

    RPC = asynchronous messaging, API calls = synchronous HTTP [OK]
Hint: RPC = queues and async; API calls = HTTP and sync [OK]
Common Mistakes:
  • Confusing RPC with HTTP usage
  • Thinking RPC requires a browser
  • Assuming direct API uses queues
2. Which of the following is the correct RabbitMQ RPC client call pattern?
easy
A. Directly call function in remote service without messaging
B. Send HTTP GET request to server endpoint
C. Send message to queue, wait for reply on callback queue
D. Open TCP socket and stream data continuously

Solution

  1. Step 1: Identify RabbitMQ RPC client behavior

    The client sends a message to a request queue and waits for a response on a callback queue.
  2. Step 2: Eliminate other options

    Options A, B, and D describe direct function calls, HTTP calls, or streaming, which are not RabbitMQ RPC patterns.
  3. Final Answer:

    Send message to queue, wait for reply on callback queue -> Option C
  4. Quick Check:

    RPC client sends request and waits on callback queue [OK]
Hint: RPC client uses request and callback queues [OK]
Common Mistakes:
  • Confusing HTTP requests with RabbitMQ messaging
  • Thinking RPC skips waiting for reply
  • Mixing streaming with RPC calls
3. Given this RabbitMQ RPC client code snippet, what will be the output if the server replies with '42'?
client.send_request('compute', payload)
response = client.wait_for_response()
print(response)
medium
A. 42
B. None
C. Error: No response received
D. compute

Solution

  1. Step 1: Analyze client request and response

    The client sends a request with 'compute' and waits for the server's reply.
  2. Step 2: Understand server reply effect

    The server replies with '42', so the client receives '42' as the response and prints it.
  3. Final Answer:

    42 -> Option A
  4. Quick Check:

    Server reply '42' is printed by client [OK]
Hint: Output matches server reply message [OK]
Common Mistakes:
  • Assuming no response means error
  • Confusing request content with response
  • Expecting function name printed
4. You wrote a RabbitMQ RPC client but it never receives a response. What is a likely cause?
medium
A. The server is sending HTTP responses instead of messages.
B. The client did not declare or listen on the callback queue.
C. The client is using direct API calls instead of RPC.
D. The client sent the request to the wrong HTTP endpoint.

Solution

  1. Step 1: Check client callback queue setup

    In RabbitMQ RPC, the client must declare and listen on a callback queue to receive replies.
  2. Step 2: Identify why no response arrives

    If the callback queue is missing or not listened to, the client won't get the server's reply message.
  3. Final Answer:

    The client did not declare or listen on the callback queue. -> Option B
  4. Quick Check:

    Missing callback queue causes no response [OK]
Hint: Always declare and listen on callback queue [OK]
Common Mistakes:
  • Confusing HTTP endpoints with RabbitMQ queues
  • Ignoring callback queue setup
  • Mixing direct API calls with RPC messaging
5. You want to build a service that processes tasks reliably even if the worker is busy or down. Which approach is best?
hard
A. Use direct API calls with HTTP for immediate responses.
B. Use local function calls without messaging or HTTP.
C. Use WebSocket connections for real-time task processing.
D. Use RabbitMQ RPC to queue tasks and get replies asynchronously.

Solution

  1. Step 1: Understand reliability needs

    Reliable task processing requires queuing tasks so they are not lost if workers are busy or down.
  2. Step 2: Match approach to reliability

    RabbitMQ RPC uses message queues that store tasks until workers process them, supporting asynchronous replies and retries.
  3. Step 3: Compare other options

    Direct API calls and WebSockets require immediate availability and do not queue tasks reliably; local calls lack distribution.
  4. Final Answer:

    Use RabbitMQ RPC to queue tasks and get replies asynchronously. -> Option D
  5. Quick Check:

    Reliable async processing = RabbitMQ RPC [OK]
Hint: Queue tasks with RPC for reliability, not direct API [OK]
Common Mistakes:
  • Choosing direct API for reliable queuing
  • Confusing WebSocket with message queue reliability
  • Ignoring asynchronous processing benefits
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard