Bird
Raised Fist0
GCPcloud~10 mins

Dead letter topics in GCP - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - Dead letter topics
Message Published
↓
Message Delivered to Subscriber
↓
Subscriber Processes Message
↓
Processing Success?
No→Retry Attempts
↓
Max Retries Reached?
No→Retry Processing
↓
Message Acknowledged
↓
END
↓
Dead Letter Topic Stores Message
Messages flow from publisher to subscriber. If processing fails repeatedly, messages move to a dead letter topic for later inspection.
Execution Sample
GCP
Publish message -> Subscriber receives -> Process message
If fails, retry up to max attempts
If still fails, send to dead letter topic
Shows how messages are retried on failure and sent to dead letter topic after max retries.
Process Table
StepActionMessage StateRetry CountResult
1Message publishedNew0Delivered to subscriber
2Subscriber processes messageProcessing0Fails
3Retry attempt 1Retrying1Fails
4Retry attempt 2Retrying2Fails
5Retry attempt 3Retrying3Fails
6Max retries reachedFailed3Sent to dead letter topic
7Message stored in dead letter topicDead letter3Stored for inspection
💡 Processing failed after max retries; message moved to dead letter topic
Status Tracker
VariableStartAfter Step 2After Step 3After Step 4After Step 5After Step 6Final
Message StateNewProcessingRetryingRetryingRetryingFailedDead letter
Retry Count0012333
Key Moments - 3 Insights
Why does the message go to the dead letter topic after retries?
Because the message failed processing after the maximum retry count was reached, as shown in steps 5 and 6 of the execution table.
Does the retry count reset after each failed attempt?
No, the retry count increments with each failure and does not reset until the message is acknowledged or moved to dead letter topic, as seen in the variable tracker.
What happens if the message processing succeeds before max retries?
The message is acknowledged and removed from the queue, ending the flow early, which is not shown here because all attempts failed.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the retry count at step 4?
A2
B3
C1
D0
💡 Hint
Check the 'Retry Count' column for step 4 in the execution table.
At which step does the message get sent to the dead letter topic?
AStep 5
BStep 6
CStep 3
DStep 7
💡 Hint
Look for the step where 'Max retries reached' and 'Sent to dead letter topic' appear in the execution table.
If the message succeeded at retry attempt 2, what would happen next?
AMessage sent to dead letter topic
BRetry count resets and retries continue
CMessage acknowledged and processing ends
DRetry count increments and message retries again
💡 Hint
Refer to the key moment about success before max retries and the flow in the concept flow diagram.
Concept Snapshot
Dead letter topics handle messages that fail processing after retries.
Messages are retried up to a max count.
If still failing, they move to dead letter topic.
This helps isolate problematic messages for later review.
Retry count increments on each failure.
Successful processing acknowledges and removes message.
Full Transcript
In Google Cloud Pub/Sub, messages are sent from publishers to subscribers. When a subscriber receives a message, it tries to process it. If processing fails, the system retries up to a maximum number of times. Each retry increments a retry count. If the message still fails after the maximum retries, it is sent to a dead letter topic. This special topic stores failed messages separately for later inspection or manual handling. This flow ensures that problematic messages do not block the system and can be reviewed later. The retry count helps track how many attempts were made before moving the message to the dead letter topic.

Practice

(1/5)
1. What is the main purpose of a dead letter topic in Google Cloud Pub/Sub?
easy
A. To store all successfully delivered messages
B. To speed up message delivery
C. To catch messages that fail delivery multiple times
D. To encrypt messages before sending

Solution

  1. Step 1: Understand message delivery failures

    Messages that cannot be delivered after several attempts need special handling to avoid blocking the main flow.
  2. Step 2: Role of dead letter topics

    Dead letter topics collect these failed messages separately so the main topic stays clean and reliable.
  3. Final Answer:

    To catch messages that fail delivery multiple times -> Option C
  4. Quick Check:

    Dead letter topic = catch failed messages [OK]
Hint: Dead letter topics catch failed messages only [OK]
Common Mistakes:
  • Thinking dead letter topics speed delivery
  • Confusing dead letter topics with encryption
  • Assuming they store successful messages
2. Which block in a Pub/Sub subscription configuration is used to set a dead letter topic?
easy
A. message_storage_policy
B. retry_policy
C. ack_deadline_seconds
D. dead_letter_policy

Solution

  1. Step 1: Identify configuration blocks for subscriptions

    Pub/Sub subscriptions have specific blocks for retry, dead letter, and storage policies.
  2. Step 2: Locate dead letter topic setting

    The dead_letter_policy block is where you specify the dead letter topic and max delivery attempts.
  3. Final Answer:

    dead_letter_policy -> Option D
  4. Quick Check:

    Dead letter topic set in dead_letter_policy [OK]
Hint: Dead letter topic is in dead_letter_policy block [OK]
Common Mistakes:
  • Confusing with retry_policy block
  • Using message_storage_policy incorrectly
  • Setting dead letter topic in ack_deadline_seconds
3. Given this subscription config snippet:
{
  "dead_letter_policy": {
    "dead_letter_topic": "projects/myproj/topics/dlt",
    "max_delivery_attempts": 5
  }
}

What happens when a message fails delivery 6 times?
medium
A. The message is retried indefinitely
B. The message is sent to the dead letter topic
C. The message is deleted immediately
D. The message is sent back to the main topic

Solution

  1. Step 1: Understand max_delivery_attempts meaning

    Messages are retried up to the max_delivery_attempts count before moving to dead letter topic.
  2. Step 2: Apply max_delivery_attempts = 5

    After 5 failed attempts, the 6th failure triggers sending the message to the dead letter topic.
  3. Final Answer:

    The message is sent to the dead letter topic -> Option B
  4. Quick Check:

    Failures > max_delivery_attempts = dead letter send [OK]
Hint: Messages move to dead letter after max attempts exceeded [OK]
Common Mistakes:
  • Thinking messages retry forever
  • Assuming immediate deletion on failure
  • Believing message returns to main topic
4. You configured a dead letter topic but messages are not appearing there after failures. What is a likely cause?
medium
A. Dead letter topic does not exist or lacks permissions
B. max_delivery_attempts is set to 1
C. Subscription ack deadline is too long
D. Main topic has no messages

Solution

  1. Step 1: Check dead letter topic existence and permissions

    If the dead letter topic is missing or the subscription lacks publish permission, messages cannot be sent there.
  2. Step 2: Understand other options

    max_delivery_attempts=1 means one try before dead letter, ack deadline affects delivery timing, and main topic empty means no messages to fail.
  3. Final Answer:

    Dead letter topic does not exist or lacks permissions -> Option A
  4. Quick Check:

    Dead letter topic must exist and be accessible [OK]
Hint: Dead letter topic must exist and allow publishing [OK]
Common Mistakes:
  • Ignoring permissions errors
  • Confusing ack deadline with dead letter setup
  • Assuming empty main topic causes dead letter issues
5. You want to ensure messages that fail more than 3 times go to a dead letter topic, but also want to limit the total retry time to 10 minutes. Which configuration approach is best?
hard
A. Set dead_letter_policy.max_delivery_attempts to 3 and configure retry_policy.minimum_backoff and maximum_backoff to limit retry duration
B. Set dead_letter_policy.max_delivery_attempts to 10 and rely on ack deadline for timing
C. Only set retry_policy.maximum_backoff to 10 minutes without dead letter policy
D. Set dead_letter_policy.max_delivery_attempts to 3 and disable retries

Solution

  1. Step 1: Use max_delivery_attempts to limit retries

    Setting max_delivery_attempts to 3 ensures messages move to dead letter after 3 failed deliveries.
  2. Step 2: Control retry timing with retry_policy

    Configuring minimum and maximum backoff controls how long retries take, helping keep total retry time within 10 minutes.
  3. Step 3: Evaluate other options

    Set dead_letter_policy.max_delivery_attempts to 10 and rely on ack deadline for timing ignores retry timing, C lacks dead letter handling, and D disables retries which may lose messages prematurely.
  4. Final Answer:

    Set dead_letter_policy.max_delivery_attempts to 3 and configure retry_policy minimum and maximum backoff -> Option A
  5. Quick Check:

    Combine max_delivery_attempts and retry_policy for retries and dead letter [OK]
Hint: Use max_delivery_attempts plus retry_policy for timing control [OK]
Common Mistakes:
  • Ignoring retry_policy for timing
  • Disabling retries loses messages
  • Setting max_delivery_attempts too high
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