sequenceDiagram participant Source as Job Source participant Queue as Queue Manager participant Worker as Queue Worker participant Job as Job Handler participant Events as Event System participant DB as Database participant Failed as Failed Jobs participant Monitor as Queue Monitor %% Job Creation Source->>Queue: Dispatch Job activate Queue Note over Queue: Create Job Record %% Job Configuration alt Has Delay Queue->>Queue: Schedule for Later else No Delay Queue->>Queue: Available Immediately end %% Worker Pickup Queue->>Worker: Worker Picks Up Job activate Worker Note over Worker: Start Processing %% Job Processing Worker->>Job: Handle Job activate Job %% Database Transaction alt Has Database Operations Job->>DB: Begin Transaction activate DB Note over DB: Perform Operations DB-->>Job: Transaction Complete deactivate DB end %% Event Dispatching alt Has Events Job->>Events: Dispatch Events activate Events Note over Events: Process Events Events-->>Job: Events Handled deactivate Events end %% Job Completion Check alt Job Succeeds Job-->>Worker: Processing Complete Worker-->>Queue: Job Completed Queue->>Events: JobProcessed Event else Job Fails Job-->>Worker: Throws Exception %% Retry Logic alt Can Retry Worker->>Queue: Release Job Note over Queue: Increment Attempts Queue-->>Worker: Job Released else Max Retries Exceeded Worker->>Failed: Move to Failed Jobs activate Failed Note over Failed: Log Failure Failed-->>Worker: Failure Logged deactivate Failed end end deactivate Job deactivate Worker deactivate Queue %% Queue Monitoring Monitor->>Queue: Check Status activate Monitor Queue-->>Monitor: Queue Statistics Note over Monitor: Monitor Queue Health Monitor->>Failed: Check Failed Jobs Failed-->>Monitor: Failed Job Count Monitor->>Worker: Check Workers Worker-->>Monitor: Worker Status deactivate Monitor %% Style Definitions style Source fill:#f9f,stroke:#333,stroke-width:2px style Queue fill:#bbf,stroke:#333,stroke-width:2px style Worker fill:#bfb,stroke:#333,stroke-width:2px style Job fill:#bfb,stroke:#333,stroke-width:2px style Events fill:#fbb,stroke:#333,stroke-width:2px style DB fill:#fbb,stroke:#333,stroke-width:2px style Failed fill:#fbb,stroke:#333,stroke-width:2px style Monitor fill:#bbf,stroke:#333,stroke-width:2px %% Notes Note right of Source: Application Code Note right of Queue: Queue Management Note right of Worker: Job Processing Note right of Job: Business Logic Note right of Events: Event System Note right of DB: Data Layer Note right of Failed: Error Handling Note right of Monitor: Health Checks %% Job States Note over Queue: Job States:
1. Pending
2. Reserved
3. Released
4. Failed %% Processing Types Note over Worker: Processing:
1. Immediate
2. Delayed
3. Batched
4. Chained %% Retry Strategy Note over Failed: Retry Strategy:
1. Exponential Backoff
2. Max Attempts
3. Custom Delays %% Monitoring Aspects Note over Monitor: Monitoring:
1. Queue Size
2. Processing Rate
3. Error Rate
4. Worker Health