
An SQS replay guide covering failure classification, schema compatibility, visibility and retention, task limits, consumer capacity and cancellation. Documented service clocks support a controlled-redrive decision process that ends with business reconciliation rather than an empty queue.
At a glance
Key findings
- A redrive task moves messages; consumer correctness and business completion require separate evidence. [2][4]
- Visibility, retention and redrive duration are different clocks and must not be added into a recovery estimate. [2][3][5]
- Canceling redrive does not undo messages already moved, so the stop plan must include reconciliation. [2]
Moving a failed message does not repair it
A dead-letter queue gives failed work a place to wait. It does not explain why the work failed or establish that returning it will succeed. Before starting a redrive, the operator needs a repaired cause, a compatible consumer, an observable replay and someone authorized to stop the operation if the failure returns.
Consider a hypothetical deployment that stopped accepting an older message schema. Messages accumulate in an SQS dead-letter queue while the new consumer continues processing newer work. Reverting the deployment may restore compatibility, but it does not prove that every failed message is valid or that replaying the backlog will leave enough capacity for current traffic. This is an authored scenario, not a reported customer incident.
Amazon SQS redrive moves messages from a dead-letter queue to a supported destination. The API operation and the consumer's processing are separate activities. A successful movement task cannot establish that a payment was recorded once, an order was completed correctly or a downstream side effect was reconciled. Those outcomes belong to the application. [2][4]
Define success before the first message returns. The relevant goal might be that accepted business work has either completed or reached an explicitly owned exception state. An empty dead-letter queue is insufficient because the messages could have failed again, become stuck elsewhere or produced an incomplete side effect. Queue movement is an intermediate observation.
This guide uses current SQS documentation reviewed on August 28, 2026. It does not prescribe a universal redrive rate or claim a live replay was performed. Standard and FIFO queue behavior must be considered separately, and any actual movement of production messages requires the organization's approved operational authority.
Classify the failure before replay
Group messages by the evidence supporting their failure, not only by the queue containing them. A permanently invalid payload, a temporary dependency outage, a permission failure and an incompatible consumer version need different responses. Returning them all through the same path can mix repaired work with work that cannot succeed without another intervention.
SQS dead-letter behavior is tied to the source queue's configured receive threshold. That threshold helps isolate repeatedly unsuccessful work, but the resulting location is not a diagnosis. Review the consumer's error context, the message's expected schema and the relevant deployment or dependency state before deciding what to return. [1][3]
In the hypothetical schema incident, identify which consumer versions accept the old representation and whether any business rules changed with the deployment. A syntactically valid message can still be semantically incompatible. For example, a field that was optional when the work was accepted might now be required by a downstream operation. The repair needs to address that contract rather than simply suppress the parser error.
Retain enough context to explain the classification while limiting access to sensitive payloads. A general incident tracker may need a message identifier and failure class, not a full customer record. Keep protected payload inspection in an authorized location, and ensure the operational record points to the evidence without exposing it to everyone who can read a ticket.
Separate unsupported work from temporarily blocked work. If a message cannot be processed under any approved consumer behavior, assign a disposition owner. That owner may need a business decision, a supported transformation or an exception workflow. Do not make a redrive button the implicit authorization to change the meaning of previously accepted work.
Check whether the work still makes business sense at replay time. A message accepted before a deadline or account-state change may no longer be appropriate to execute unchanged. That is an application decision, not something SQS can infer from the queue age. Where such conditions matter, make the consumer or an authorized disposition workflow evaluate them explicitly instead of treating every retained message as an instruction that must eventually run.
Finally, record what establishes that the cause is repaired. A successful deployment command may show that code changed, but a focused consumer check should demonstrate the relevant compatibility. The scope matters: one corrected parser path does not establish that every historical message variant is now supported.
Keep the queue clocks separate
Visibility timeout, message retention and redrive-task duration govern different things. Visibility affects how long a received message is hidden from other consumers. Retention affects how long SQS keeps a message. A redrive task has its own operation-duration limit. None of these settings alone is the business recovery objective.
The current API reference gives a maximum visibility timeout of 43,200 seconds, a default retention of 345,600 seconds and a maximum retention of 1,209,600 seconds. Expressed in hours, those values are 12, 96 and 336. AWS separately limits a dead-letter queue redrive task to 36 hours. The chart compares these documented clocks without treating them as measured recovery times. [2][3][6]
Visibility extensions also have a boundary. The maximum applies from the original receive operation; extending visibility does not create an unlimited new processing lifetime. A consumer that needs more time must be designed with the service's documented behavior in mind. Do not assume that repeatedly extending visibility is a substitute for a supported long-running workflow. [5]
Retention requires special attention during recovery. AWS warns that reducing MessageRetentionPeriod can affect existing messages and cause older ones to expire. A configuration change intended to tidy a queue can therefore remove unresolved work. Review existing age and the consequences before changing retention, and keep destructive changes outside an improvised replay procedure. [3]
Standard and FIFO dead-letter behavior differs. AWS documents that the original enqueue timestamp is retained for standard-queue expiration behavior, while the enqueue timestamp resets when a FIFO message enters the dead-letter queue. The age metric and the time remaining before expiration must therefore be interpreted using the actual queue type. [1]
Redrive out of the dead letter queue is a separate transition. AWS states that the task resets retention and treats redriven messages as new messages, assigning a new messageID and enqueueTime. The source-to-DLQ timestamp rules do not describe this later movement. An incident record that follows only the original SQS identifier can therefore lose its association with the returned work. [2]
Preserve an application-level business correlation identifier and an idempotency key through the workflow, with an explicit mapping to each transport message identifier that the consumer observes. This is a proposed application design, not a claim that SQS supplies a universal business key. Reconciliation should answer whether the intended business operation completed, including when a transport identifier or enqueue timestamp changed during recovery.
FIFO also needs an ordering review. AWS explains that a destination receiving new producer messages during redrive can interweave those messages with the redriven work. FIFO redrive does not restore a single original ordering across all old and newly produced business operations. If correctness depends on that relationship, define an approved coordination or reconciliation procedure before replay; do not infer it from the queue type alone. [2]
Do not add the chart's bars to produce an expected completion time. A 36-hour movement limit and a 14-day retention maximum are different constraints, not consecutive stages. The operator needs the current message state, configured values and processing evidence to understand the available recovery window.
Different SQS clocks govern different failures
AWS documented limits and default, reviewed August 28, 2026. Visibility, redrive duration and retention govern different operations. The bars are not recovery-time measurements.

Source. Primary sources [3] [2] [5]. Reviewed August 28, 2026. AWS documented limits and default, reviewed August 28, 2026. Visibility, redrive duration and retention govern different operations. The bars are not recovery-time measurements.
Method. AWS SQS documentation reviewed August 28, 2026. Unit: hours. The documented 43,200-second maximum visibility timeout, 345,600-second default retention and 1,209,600-second maximum retention were divided by 3,600 to produce 12, 96 and 336 hours. The redrive-task duration limit is documented directly as 36 hours. Each value governs a different operation or retention setting. The bars are neither consecutive stages nor an end-to-end recovery SLA, and no elapsed recovery time was measured.
Accessible table and figure data
| Clock | Hours | Scope |
|---|---|---|
| Maximum visibility | 12 | Per-receive processing clock; extensions do not reset the first-receive origin |
| Maximum redrive task | 36 | Service redrive operation duration limit |
| Default retention | 96 | Default queue message retention of 4 days |
| Maximum retention | 336 | Maximum queue message retention of 14 days |
| Clock | Hours | Scope |
|---|---|---|
| Maximum visibility | 12 | Per-receive processing clock; extensions do not reset the first-receive origin |
| Maximum redrive task | 36 | Service redrive operation duration limit |
| Default retention | 96 | Default queue message retention of 4 days |
| Maximum retention | 336 | Maximum queue message retention of 14 days |
Prove the consumer can accept the returning work
Check compatibility at the business boundary, not only the queue interface. The consumer may accept a message and still fail when it reaches a database, an external API or an authorization check. Identify the dependencies and side effects that must succeed for the message to count as completed work.
Replay also raises the question of repeated effects. A previous attempt may have completed one action before failing another. Returning that message can repeat the first action unless the application has a suitable idempotency or reconciliation design. The existing retry analysis covers those mechanics; the redrive review should confirm which protection applies to this particular work and where it ends.
Batch behavior can broaden the scope of a failure. AWS's Lambda SQS guidance explains partial-batch response handling, which can distinguish failed records from successful ones instead of treating the whole batch as unsuccessful. The correct configuration and ordering behavior depend on the event source and queue type. Review those requirements rather than assuming every consumer has the same retry semantics. [7]
Use a small, authorized check that represents the repaired failure class. Record which consumer version handled it, which input form was used and what business outcome was verified. A check against a simplified payload may be useful, but it should not be described as validation of every message in the backlog.
Capacity is another independent condition. The active consumer may already be handling current traffic, and replay adds work to the same dependencies. Assess the resources that constrain successful processing, including downstream quotas or database contention. A queue accepting messages does not establish that the complete path has headroom.
Where the evidence is incomplete, keep the uncertainty in the decision. The team can choose a more limited canary, additional compatibility work or a delayed replay. It should not convert an unknown into a pass merely because the backlog is operationally uncomfortable or a movement task can be started immediately.
Start a bounded replay with a stop owner
AWS documents a custom maximum redrive velocity of 500 messages per second. That is an API limit, not a recommendation for the reader's consumer. The appropriate rate depends on the tested processing path and the capacity required for ongoing work. Selecting the maximum simply because the API permits it is not a capacity plan. [4]
Start with a bounded replay whose scope and observation criteria are understood. Define the failure class being returned, the consumer and dependency signals that will be watched, and the evidence required before increasing the rate. The exact quantity or duration should come from the organization's workload and procedure, not from a fictional benchmark in a generic guide.
Name a stop owner before starting. They need the authority to halt movement when the original error returns, a dependency saturates or business results become ambiguous. A stop condition should be specific enough to distinguish expected transient behavior from a reason to pause. It must also be visible to the people operating the task.
Cancellation has a limited effect. AWS states that messages already moved successfully remain in their destination when a running redrive is canceled. Stopping the task does not pull those messages back into the dead-letter queue or undo effects the consumer has already produced. The response plan therefore needs reconciliation for work that crossed the boundary before cancellation. [2]
SQS redrive also does not provide arbitrary filtering and modification of messages during the movement operation. If the recovery requires transforming payloads or choosing a subset based on application content, that is a separate supported workflow with its own authority and validation needs. Do not imply that a rate setting can perform those application decisions. [2]
Review the operator and consumer identities separately. Permission to initiate message movement does not establish that the receiving application can use its downstream resources. AWS documents permissions for dead-letter queue redrive, including considerations for encrypted queues. The operational review should confirm the approved movement path and the required key access without broadening unrelated access as an emergency shortcut. Retain the authorization decision with the task so a later reviewer can distinguish an approved replay from an unexplained movement of sensitive work. [2]
The decision tree preserves the stop path instead of drawing replay as a one-way march to success. A small replay that fails has supplied useful evidence. Keep the cause assigned, record the moved scope and revise the repair. Continuing merely to empty the queue can make the recovery harder to explain.
A controlled return to the consumer
Replay progresses only when the cause, compatibility and observation requirements are satisfied.

Source. Primary documentation [2] [4] [7] [8]. Reviewed August 28, 2026.
Method. Original conceptual synthesis reviewed August 28, 2026. Unit: qualitative states and relationships. Scope: Amazon SQS dead letter queue redrive safety. It is not measured performance, prevalence, risk or implementation proof. Replay progresses only when the cause, compatibility and observation requirements are satisfied.
Accessible table and figure data
| Question | If yes | If no |
|---|---|---|
| Cause is understood and repaired | Verify message and consumer compatibility | Retain failed work and assign repair |
| Small replay completes correctly | Increase within tested headroom | Stop and investigate |
| Re-failure or saturation appears | Stop movement and reconcile moved work | Continue observation |
| Business work reconciles | Close with evidence | Keep unresolved work assigned |
| Question | If yes | If no |
|---|---|---|
| Cause is understood and repaired | Verify message and consumer compatibility | Retain failed work and assign repair |
| Small replay completes correctly | Increase within tested headroom | Stop and investigate |
| Re-failure or saturation appears | Stop movement and reconcile moved work | Continue observation |
| Business work reconciles | Close with evidence | Keep unresolved work assigned |
Watch business completion not only queue depth
Queue metrics help describe movement and waiting, but each metric has a documented meaning. Read those definitions before using one as the recovery signal. AWS notes interpretation caveats for age metrics, including how poison-pill messages can be treated in standard queues. An apparently improving age value does not automatically mean every old failed message was resolved. [8]
Observe the consumer as well as both queues. A falling dead-letter count can coincide with rising failures in the destination. Track whether messages are being received, completed and deleted under the intended application semantics. Connect errors to the replay scope where possible so the team can distinguish returning work from unrelated current traffic.
Keep approximate service metrics separate from an application reconciliation record. Operational dashboards can reveal a trend without accounting for every accepted business item. If the recovery requires item-level completion, define the application source of truth and the evidence needed to match attempted work with completed outcomes.
Current users also matter. A replay can succeed for historical messages while degrading the service handling new requests. Include the relevant user outcomes and dependency health in the observation plan. The replay rate should remain subordinate to the agreed service priorities rather than treating backlog reduction as the only valuable result.
In the hypothetical schema recovery, the team should confirm that the old messages reached the intended business state and that messages that remain unsupported have a named owner. It should also verify that the consumer did not create duplicate effects or conceal errors by discarding fields that were previously meaningful.
When signals disagree, preserve the disagreement. A dashboard may show the queue draining while reconciliation identifies unresolved items. The next action is to explain that difference, not to select the most reassuring chart. A recovery report should state the completed scope and the unresolved scope independently.
Close the replay with retained evidence
A useful closure record identifies the repaired cause, the consumer version, the replay scope, the movement operation and the business verification. It also records cancellations, repeated failures and messages left for another disposition. The purpose is to let another operator understand what happened without recreating the incident from scattered console views.
Do not mark an exception as completed processing. Some work may be invalid, duplicated or no longer appropriate to execute. An authorized disposition can resolve the operational question, but it is a different outcome from successful processing. The distinction matters when the original work represented a commitment to a customer or another system.
Review changes that would prevent the same failure class. The schema incident may justify a compatibility test or a clearer versioning contract. A dependency outage may require different operational handling. A capacity problem may point to admission or consumer design. Select the change that follows from the evidence instead of applying the same retry adjustment to every incident.
Preserve the limits of the exercise or replay. The result supports the consumer version, message population and conditions that were actually observed. A later deployment or new message form can invalidate part of that evidence. Keep the verification scope close to the procedure so future operators do not mistake a past receipt for permanent compatibility.
The queue is ready to return to ordinary operation when its remaining work is understood and owned, not merely when a movement task reports success. A controlled redrive makes that outcome visible: the cause was repaired, the returning work stayed within an observed operating envelope, and the application reconciled what the queue could only move.
Method and provenance
Primary documentation review and original operational analysis, checked August 28, 2026. Source versions, claim mappings and visual data are retained in the accompanying research dossier. This article was first published in the practitioner-guides collection on August 28, 2026.
No customer environment, incident evidence, production deployment or service performance was tested for this article. Hypothetical examples and conceptual diagrams are labeled. Chart values retain their stated source scope and must not be interpreted as organizational risk or measured implementation success. Organization-specific authorization, architecture and legal obligations require their own review.
AI assistance. Researched, drafted and checked against cited sources with AI assistance. No independent human editorial review or original empirical testing is claimed.
Published under the Cloud Security Desk organizational byline. Read the practitioner guide policy.
References
- Using dead-letter queues in Amazon SQS - Amazon Simple Queue Service Amazon Web Services. Accessed .
- Learn how to configure a dead-letter queue redrive in Amazon SQS - Amazon Simple Queue Service Amazon Web Services. Accessed .
- SetQueueAttributes - Amazon Simple Queue Service Amazon Web Services. Accessed .
- StartMessageMoveTask - Amazon Simple Queue Service Amazon Web Services. Accessed .
- Amazon SQS visibility timeout - Amazon Simple Queue Service Amazon Web Services. Accessed .
- Amazon SQS message quotas - Amazon Simple Queue Service Amazon Web Services. Accessed .
- Handling errors for an SQS event source in Lambda - AWS Lambda Amazon Web Services. Accessed .
- Available CloudWatch metrics for Amazon SQS - Amazon Simple Queue Service Amazon Web Services. Accessed .