Workflow Event Retries & Failures
Audience
Developers, QA, support, operations and service owners.
Summary
When publication returns failure or throws, the processor increments the retry count, records the error and marks the outbox record Failed. Pending and Failed records remain eligible for later relay iterations.
Operational behavior
The relay runs repeatedly in a hosted service and isolates iteration failures with warning logging. Each record is saved after its publication outcome. No verified maximum attempt count, exponential backoff, poison-message quarantine, dead-letter workflow or operator replay endpoint exists in this path.
A crash after broker publication but before the Processed update may cause a later duplicate. A permanently failing record remains eligible indefinitely.
Symptoms
An eligible outbox record remains Failed, its retry count grows, or downstream effects are missing or duplicated.
Cause
Publication returned failure or threw, the Processed status save failed after publication, or a permanently failing record has no terminal retry policy.
Resolution
Inspect the stored error and relay warning, confirm transport availability and consumer ownership, and use only an approved recovery or replay procedure. No Workflow-specific operator replay endpoint is verified.
Validation
Confirm that the record reaches Processed and that any downstream effect occurs once from the consumer's perspective. Retain the event identifier when checking for duplicate effects.
Requires Confirmation
Retry budgets, backoff, alert thresholds, dead-letter ownership, manual recovery and duplicate tolerance require confirmation before production reliance.
Source References
microservices/src/shared-kernel/Messaging/OutboxProcessor.csmicroservices/src/workflow-service/Infrastructure/Persistence.csmicroservices/src/workflow-service/Messaging/OutboxRelayHostedService.cs
Related Articles
See Also
Keywords
Workflow events, retry, failure recovery.
Revision Information
- Status: Draft
- Last reviewed: 2026-07-20
- Next review: 2026-10-20