Run an asynchronous call through the work queue
What It Does
Asynchronous execution commits work before reporting acceptance. Dispatchers transfer retained work to queues and consumers resume the attempt loop. Later completion writes the application’s notification in the same transaction as settlement, with routing handled separately.
The Flow
When Something Fails
Database failure rejects acceptance; a lost nudge is recovered by the schedule. Committed dispatch work can wait until the next scheduled pass. Leave failed publications for retry after their claim expires. Publication followed by failed deletion can send the same work again. Skip obsolete messages; retries beyond the attempt ceiling settle as failure. Later continuation can remain queued during an outage. Refuse invalid, foreign or no-longer-applicable callbacks. Unsettled work can remain in flight until timeout investigation. A losing writer changes no outcome and creates no completion. A failed transaction retains the previous execution status. Retry failed routing with queued backoff, ending dead after six attempts. The application can remain unaware of a settled provider operation.
Open Design Questions
Completed provider work can precede successful event delivery. Receiver deduplication remains required even though completion creation is atomic.