Bird
Raised Fist0
RabbitMQdevops~10 mins

Consumer prefetch optimization in RabbitMQ - Interactive Code Practice

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

Complete the code to set the prefetch count to 10 for a RabbitMQ channel.

RabbitMQ
channel.basic_qos(prefetch_count=[1])
Drag options to blanks, or click blank then click option'
A0
B20
C10
D5
Attempts:
3 left
💡 Hint
Common Mistakes
Setting prefetch_count to 0 disables prefetching, which may overload the consumer.
2fill in blank
medium

Complete the code to enable manual message acknowledgments in the consumer.

RabbitMQ
channel.basic_consume(queue='task_queue', on_message_callback=callback, auto_ack=[1])
Drag options to blanks, or click blank then click option'
ATrue
BFalse
CNone
D0
Attempts:
3 left
💡 Hint
Common Mistakes
Using True disables manual acknowledgments and prefetch control.
3fill in blank
hard

Fix the error in setting prefetch count to limit unacknowledged messages to 5.

RabbitMQ
channel.basic_qos(prefetch_count=[1])
Drag options to blanks, or click blank then click option'
A5
BNone
C-5
D'5'
Attempts:
3 left
💡 Hint
Common Mistakes
Using a string instead of an integer causes a type error.
4fill in blank
hard

Fill both blanks to set prefetch count to 20 and disable global prefetch.

RabbitMQ
channel.basic_qos(prefetch_count=[1], global=[2])
Drag options to blanks, or click blank then click option'
A20
BTrue
CFalse
D10
Attempts:
3 left
💡 Hint
Common Mistakes
Setting global to True applies prefetch count globally, not per consumer.
5fill in blank
hard

Fill all three blanks to create a consumer with prefetch count 15, manual ack, and queue named 'jobs'.

RabbitMQ
channel.basic_qos(prefetch_count=[1])
channel.basic_consume(queue=[2], on_message_callback=callback, auto_ack=[3])
Drag options to blanks, or click blank then click option'
A15
B'jobs'
CFalse
DTrue
Attempts:
3 left
💡 Hint
Common Mistakes
Using True for auto_ack disables manual acknowledgments.

Practice

(1/5)
1.

What does setting the prefetch_count in RabbitMQ control?

easy
A. The number of producers connected
B. The total number of queues in RabbitMQ
C. The maximum size of a message
D. The number of messages a consumer can receive before acknowledging

Solution

  1. Step 1: Understand prefetch_count meaning

    The prefetch_count limits how many messages a consumer can get without acknowledging previous ones.
  2. Step 2: Relate to consumer message handling

    This setting helps control consumer load by limiting unacknowledged messages.
  3. Final Answer:

    The number of messages a consumer can receive before acknowledging -> Option D
  4. Quick Check:

    prefetch_count controls message flow to consumer = D [OK]
Hint: Prefetch limits unacknowledged messages per consumer [OK]
Common Mistakes:
  • Confusing prefetch_count with queue count
  • Thinking it limits message size
  • Assuming it controls producers
2.

Which of the following is the correct way to set prefetch_count to 10 using RabbitMQ's basic.qos command?

easy
A. channel.set_qos(10)
B. channel.prefetch(10)
C. channel.basic_qos(prefetch_count=10)
D. channel.qos(prefetch=10)

Solution

  1. Step 1: Recall RabbitMQ client method for QoS

    The correct method to set prefetch count is basic_qos with prefetch_count argument.
  2. Step 2: Match syntax with options

    channel.basic_qos(prefetch_count=10) uses channel.basic_qos(prefetch_count=10), which is the correct syntax.
  3. Final Answer:

    channel.basic_qos(prefetch_count=10) -> Option C
  4. Quick Check:

    basic_qos with prefetch_count sets limit = B [OK]
Hint: Use basic_qos(prefetch_count=number) to set prefetch [OK]
Common Mistakes:
  • Using incorrect method names like set_qos or prefetch
  • Passing wrong parameter names
  • Confusing method with queue settings
3.

Given the following Python code snippet using pika library, what will be the effect of setting prefetch_count=5?

channel.basic_qos(prefetch_count=5)
for method_frame, properties, body in channel.consume('task_queue'):
    process_message(body)
    channel.basic_ack(method_frame.delivery_tag)
medium
A. Consumer will receive up to 5 unacknowledged messages at a time
B. Consumer will receive only 1 message at a time
C. Consumer will receive all messages without limit
D. Consumer will reject messages after 5

Solution

  1. Step 1: Understand prefetch_count effect in code

    Setting prefetch_count=5 limits unacknowledged messages to 5 per consumer.
  2. Step 2: Analyze message flow in loop

    The consumer processes and acknowledges messages one by one but can hold up to 5 unacknowledged messages simultaneously.
  3. Final Answer:

    Consumer will receive up to 5 unacknowledged messages at a time -> Option A
  4. Quick Check:

    prefetch_count=5 means max 5 unacked messages = A [OK]
Hint: prefetch_count sets max unacked messages per consumer [OK]
Common Mistakes:
  • Thinking it limits to 1 message only
  • Assuming unlimited messages are received
  • Confusing reject with prefetch behavior
4.

Identify the issue in this RabbitMQ consumer code snippet that sets prefetch_count=0 and explain why it might cause problems:

channel.basic_qos(prefetch_count=0)
for method_frame, properties, body in channel.consume('queue'):
    process(body)
    channel.basic_ack(method_frame.delivery_tag)
medium
A. prefetch_count=0 disables prefetch, causing unlimited unacknowledged messages
B. prefetch_count=0 means no messages will be delivered
C. prefetch_count=0 causes syntax error
D. prefetch_count=0 limits to 1 message only

Solution

  1. Step 1: Understand prefetch_count=0 meaning

    Setting prefetch_count=0 disables the limit, allowing unlimited unacknowledged messages.
  2. Step 2: Explain potential problem

    This can overload the consumer with too many messages, causing memory or processing issues.
  3. Final Answer:

    prefetch_count=0 disables prefetch, causing unlimited unacknowledged messages -> Option A
  4. Quick Check:

    prefetch_count=0 means no limit, risk overload = A [OK]
Hint: prefetch_count=0 means unlimited messages, risky for consumers [OK]
Common Mistakes:
  • Thinking 0 means no messages delivered
  • Assuming it causes syntax error
  • Believing it limits to 1 message
5.

You have a slow consumer that processes messages in 10 seconds each. To optimize throughput without overloading it, which prefetch_count value is best if you want to keep the consumer busy but not overwhelmed?

hard
A. 1
B. 10
C. 100
D. 0

Solution

  1. Step 1: Analyze consumer speed and prefetch impact

    A slow consumer taking 10 seconds per message should have a prefetch count that allows some parallelism but avoids overload.
  2. Step 2: Choose prefetch_count to balance load

    Setting prefetch_count to 10 allows the consumer to receive up to 10 messages unacknowledged, keeping it busy without too many messages queued.
  3. Final Answer:

    10 -> Option B
  4. Quick Check:

    Prefetch matches consumer speed for balance = C [OK]
Hint: Match prefetch to consumer speed to avoid overload [OK]
Common Mistakes:
  • Setting prefetch too low causing idle time
  • Setting prefetch too high causing overload
  • Using 0 which causes unlimited messages
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