Good practice is not just finding the correct option. The wrong answers often show the exact trap the exam wants you to fall into.
A
Distractor review
Increase the SQS visibility timeout and, when validation fails, call DeleteMessage in the consumer to remove the message immediately.
Increasing visibility reduces redelivery temporarily, but it does not implement a poison-message quarantine strategy. Deleting invalid messages immediately removes evidence and prevents systematic handling (for example, inspection or correction) of the poison messages.
B
Distractor review
Move to SNS topics with subscriptions and rely on SNS to provide exactly-once delivery to eliminate duplicates automatically.
SNS does not provide exactly-once delivery guarantees. Duplicate deliveries can still occur due to retries and downstream failures, so you still need an idempotency strategy to protect side effects.
C
Best answer
Configure a dead-letter queue (DLQ) with a redrive policy that moves messages after maxReceiveCount, and implement idempotent processing in the consumer using an idempotency key.
SQS Standard is at-least-once delivery, so timeouts can cause redelivery and duplicates. A DLQ with a redrive policy prevents poison messages from retrying forever by moving them after repeated failures. Idempotent processing (for example, storing a processed marker in a database with conditional logic keyed by an idempotency key) prevents duplicate side effects when retries occur for valid messages.
D
Distractor review
Change the queue to FIFO and enable content-based deduplication, leaving the consumer logic unchanged.
FIFO with content-based deduplication may reduce some duplicates, but it does not guarantee protection against duplicate side effects when the consumer times out or fails after partially processing. Poison-message retry loops still need a DLQ/redrive approach, and idempotency is still required to make processing safe under retries.