Documentation: https://hypervel.org/docs/queues
- Laravel's DynamoDB failed-job provider is not provided. Use database or file storage for failed jobs.
- Custom job implementations must support
JobLifecycleCallbacksto useCountCrashesAsExceptions, so cleanup completes before a concurrent retry starts. The baseJobs\Jobalready implements it; theJobcontract is unchanged. See counting worker crashes. - Timeouts unwind yielding job code with Swoole's
CanceledException, starting itscatchandfinallyblocks. Usefinallyfor cleanup and rethrow cancellation if caught. The worker stops after timeout handling by default, with a bounded wait for cleanup;Worker::$killOnTimeout = falsekeeps other jobs running. See worker timeouts for cleanup and blocked-loop recovery. - The protected
enqueueUsing()callback receives the queue that owns the operation as its first argument. This lets deferred work borrow a fresh pooled queue connection after a database transaction commits instead of retaining a connection for the lifetime of the transaction. - Positive per-message delays on SQS FIFO queues throw
LogicException. Laravel silently omits the delay and sends the job immediately. RateLimited::releaseAfter(0)requests an immediate retry. Laravel treats zero as absent and uses the limiter's computed retry delay.RedisQueue::scanQueueKeys()is intentionally omitted. Queue discovery streams keys on a held connection instead of materializing a physical-key array; overrideallQueueNames()to customize discovery.- Redis bulk dispatch uses
enqueueBatch()andLuaScripts::bulk()for both standalone Redis and Cluster, storing immediate and delayed jobs together with an exact completion count. Laravel'sRedisQueue::bulkOnClusterConnection()andLuaScripts::bulkPush()helpers are intentionally omitted.
Ported from: https://github.com/laravel/framework/tree/13.x/src/Illuminate/Queue