* [13.x] Send bulk SQS jobs via SendMessageBatch
Dispatch jobs queued via bulk() (e.g. Bus::batch) using the SQS
SendMessageBatch API instead of one SendMessage call per job. Entries are
chunked to respect the SendMessageBatch limits of 10 messages and 1 MiB
cumulative payload, then each chunk is sent sequentially and dispatch
stops at the first failure — mirroring push(): jobs already sent stay
queued, later chunks are not attempted, and the error surfaces to the
caller. Stopping on failure also preserves FIFO ordering for free.
Per-job afterCommit, unique/debounce locks, delays, overflow storage, and
the JobQueueing / JobQueued events all behave identically to push(). The
rollback-callback registration shared with push() is extracted into
Queue::registerRollbackCallbacksForDeferredJob() and reused by SyncQueue.
Request-level failures propagate as the SqsException the SDK throws.
SendMessageBatch can also return HTTP 200 while rejecting individual
entries (which the SDK does not raise for); per the AWS docs those must be
checked, so a rejected entry is surfaced as an equivalent SqsException
carrying the reported error code, message, and full result.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* streamline comments
* formatting
* formatting
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Taylor Otwell <taylor@laravel.com>