Bird
Raised Fist0
RabbitMQdevops~5 mins

Mirrored queues for redundancy in RabbitMQ - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a mirrored queue in RabbitMQ?
A mirrored queue is a queue that is replicated across multiple nodes in a RabbitMQ cluster to ensure messages are not lost if one node fails.
Click to reveal answer
beginner
How do mirrored queues improve message reliability?
They keep copies of the queue on multiple nodes, so if one node crashes, another node still has the messages, preventing data loss.
Click to reveal answer
intermediate
Which RabbitMQ configuration file is used to define mirrored queues policies?
The policies for mirrored queues are set in the RabbitMQ configuration or via the rabbitmqctl command using policy definitions.
Click to reveal answer
intermediate
What is the command to set a policy for mirroring all queues in RabbitMQ?
rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all"}'
Click to reveal answer
intermediate
What happens if the master node of a mirrored queue fails?
One of the mirrors is promoted to master automatically, so the queue continues working without message loss.
Click to reveal answer
What is the main purpose of mirrored queues in RabbitMQ?
ATo encrypt messages
BTo speed up message delivery
CTo reduce message size
DTo replicate queues across nodes for fault tolerance
Which command sets a policy to mirror all queues in RabbitMQ?
Arabbitmqctl mirror_queue all
Brabbitmqctl start_mirroring all
Crabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all"}'
Drabbitmqctl enable_ha all
If the master node of a mirrored queue fails, what happens next?
AA mirror is promoted to master automatically
BThe queue is deleted
CMessages are lost
DThe cluster shuts down
Mirrored queues help prevent which of the following?
AUnauthorized access
BMessage loss during node failure
CSlow network connections
DMessage duplication
Where are mirrored queue policies typically defined?
AIn RabbitMQ configuration or via rabbitmqctl
BIn the application code
CIn the operating system settings
DIn the database schema
Explain how mirrored queues provide redundancy in RabbitMQ.
Think about what happens when a node fails.
You got /3 concepts.
    Describe the steps to enable mirrored queues using RabbitMQ policies.
    Focus on the command and policy settings.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using mirrored queues in RabbitMQ?
      easy
      A. To keep copies of messages on multiple servers for safety
      B. To speed up message delivery by duplicating messages
      C. To reduce the number of messages stored in the queue
      D. To encrypt messages automatically during transmission

      Solution

      1. Step 1: Understand mirrored queues concept

        Mirrored queues replicate messages across multiple RabbitMQ nodes to ensure no message is lost if one node fails.
      2. Step 2: Identify the main benefit

        This replication provides redundancy and safety, not speed or encryption.
      3. Final Answer:

        To keep copies of messages on multiple servers for safety -> Option A
      4. Quick Check:

        Mirroring = Redundancy and safety [OK]
      Hint: Mirrored queues copy messages for safety, not speed or encryption [OK]
      Common Mistakes:
      • Thinking mirroring speeds up delivery
      • Confusing mirroring with encryption
      • Assuming mirroring reduces message count
      2. Which command correctly sets a policy to mirror all queues in RabbitMQ?
      easy
      A. rabbitmqctl set_policy ha-all .* '{"ha-mode":"all"}'
      B. rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all"}'
      C. rabbitmqctl set_policy ha-all ".*" '{ha-mode:all}'
      D. rabbitmqctl set_policy ha-all ".*" '{"ha-mode":all}'

      Solution

      1. Step 1: Review correct syntax for set_policy

        The command requires the policy name, pattern in quotes, and JSON string with keys and values in double quotes.
      2. Step 2: Identify correct JSON format and quoting

        rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all"}' uses correct JSON with double quotes around keys and values and quotes the pattern ".*" properly.
      3. Final Answer:

        rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all"}' -> Option B
      4. Quick Check:

        Correct JSON and quoting = rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all"}' [OK]
      Hint: Use double quotes inside JSON and quote pattern with ".*" [OK]
      Common Mistakes:
      • Missing quotes around JSON keys or values
      • Not quoting the pattern string
      • Using single quotes inside JSON instead of double quotes
      3. Given this policy command:
      rabbitmqctl set_policy ha-two ".*" '{"ha-mode":"exactly","ha-params":2}'
      What will happen when a queue is created?
      medium
      A. The queue will be mirrored on one node only
      B. The queue will be mirrored on all nodes
      C. The queue will be mirrored on exactly two nodes
      D. The queue will not be mirrored at all

      Solution

      1. Step 1: Understand ha-mode 'exactly' with ha-params

        The policy sets ha-mode to 'exactly' with ha-params 2, meaning the queue is mirrored on exactly 2 nodes.
      2. Step 2: Apply policy effect on new queues

        Any queue matching ".*" will be mirrored on exactly two nodes as per the policy.
      3. Final Answer:

        The queue will be mirrored on exactly two nodes -> Option C
      4. Quick Check:

        ha-mode exactly + ha-params 2 = mirror on 2 nodes [OK]
      Hint: ha-mode 'exactly' with ha-params sets mirror count [OK]
      Common Mistakes:
      • Confusing 'all' with 'exactly'
      • Ignoring ha-params value
      • Assuming no mirroring without ha-mode 'all'
      4. You set this policy:
      rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all"}'
      But queues are not mirrored. What is the likely problem?
      medium
      A. The policy requires a restart of the queue or server to apply
      B. The pattern ".*" does not match queue names
      C. The policy was set but RabbitMQ was not restarted
      D. The JSON syntax is incorrect

      Solution

      1. Step 1: Check policy application behavior

        Policies apply only to new queues or queues restarted after policy set.
      2. Step 2: Identify why existing queues are not mirrored

        Existing queues created before policy need to be deleted or restarted to apply mirroring.
      3. Final Answer:

        The policy requires a restart of the queue or server to apply -> Option A
      4. Quick Check:

        Policy applies only on new or restarted queues [OK]
      Hint: Policies apply only to new or restarted queues [OK]
      Common Mistakes:
      • Thinking RabbitMQ restart is needed
      • Assuming pattern ".*" never matches
      • Believing JSON syntax is wrong when it is correct
      5. You want to ensure a queue named task_queue is mirrored on at least 3 nodes but no more than 5 using a range specification in ha-params. Which policy configuration achieves this?
      hard
      A. rabbitmqctl set_policy ha-range "^task_queue$" '{"ha-mode":"nodes","ha-params":["node1","node2","node3"]}'
      B. rabbitmqctl set_policy ha-minmax ".*" '{"ha-mode":"exactly","ha-params":3}'
      C. rabbitmqctl set_policy ha-minmax "^task_queue$" '{"ha-mode":"nodes","ha-params":["node1","node2","node3","node4","node5"]}'
      D. rabbitmqctl set_policy ha-minmax "^task_queue$" '{"ha-mode":"exactly","ha-params":"3-5"}'

      Solution

      1. Step 1: Understand ha-mode 'exactly' with range ha-params

        ha-mode 'exactly' with ha-params as string like '3-5' dynamically mirrors the queue on a number of replicas between 3 and 5.
      2. Step 2: Identify correct command

        rabbitmqctl set_policy ha-minmax "^task_queue$" '{"ha-mode":"exactly","ha-params":"3-5"}' matches the queue exactly and uses range specification.
      3. Step 3: Check other options

        B uses fixed exactly 3 on all queues; C uses fixed nodes list of 5; D uses fixed nodes list of 3.
      4. Final Answer:

        rabbitmqctl set_policy ha-minmax "^task_queue$" '{"ha-mode":"exactly","ha-params":"3-5"}' -> Option D
      5. Quick Check:

        ha-mode exactly + ha-params "3-5" = dynamic range 3-5 [OK]
      Hint: Use ha-mode 'exactly' with ha-params "3-5" for range [OK]
      Common Mistakes:
      • Using 'exactly' with fixed integer instead of range string
      • Not matching queue name exactly
      • Using 'nodes' mode with fixed list instead of range
      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