shiftonelabs/laravel-sqs-fifo-queue
Queue facade, jobs, workers), reducing boilerplate. The package extends Laravel’s SqsQueue to handle FIFO-specific behaviors (e.g., MessageGroupId, DeduplicationId)..env with SQS FIFO queue URL and credentials.config/queue.php to use the sqs-fifo driver.Dispatch, Handle, Fail). However, FIFO-specific features (e.g., MessageGroupId) must be explicitly configured in jobs or dynamically set via middleware.| Risk Area | Severity | Mitigation Strategy |
|---|---|---|
| FIFO Misconfiguration | High | Validate MessageGroupId and DeduplicationId in jobs/middleware. Use AWS SQS console to monitor queue metrics. |
| AWS Credential Leaks | Medium | Restrict IAM roles to least privilege; use Laravel’s .env encryption. |
| Visibility Timeout | Medium | Monitor ApproximateNumberOfMessagesVisible in CloudWatch; adjust worker concurrency. |
| Laravel Version Drift | Low | Pin shiftonelabs/laravel-sqs-fifo-queue to a tested version (e.g., ^3.0 for L11). |
| Cold Start Latency | Low | Use SQS FIFO’s short polling (if supported) or provisioned throughput. |
MessageGroupId) or partitioned (multiple groups)?MessageGroupId be determined (e.g., per-user, per-order)?DeduplicationId be generated to avoid false duplicates (e.g., UUID vs. composite keys)?ApproximateNumberOfMessagesNotVisible) being monitored?php artisan queue:work) with sufficient concurrency.sqs:SendMessage, sqs:ReceiveMessage, sqs:DeleteMessage.MessageGroupId/DeduplicationId.ThrottledSend, VisibilityTimeout).3.x for L11).aws/aws-sdk-php; ensure version compatibility (e.g., ^3.0).aws sqs create-queue --queue-name my-fifo-queue --attributes FifoQueue=true
// config/queue.php
'connections' => [
'sqs-fifo' => [
'driver' => 'sqs-fifo',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'prefix' => env('AWS_SQS_FIFO_PREFIX', 'https://sqs.us-east-1.amazonaws.com/1234567890/my-fifo-queue.fifo'),
'region' => env('AWS_REGION', 'us-east-1'),
],
],
// Option 1: Static Group ID (all messages in same order)
Queue::push(new ProcessOrder($orderId), 'order-group');
// Option 2: Dynamic Group ID (per-user ordering)
Queue::push(new SendNotification($userId), "user-group-{$userId}");
Queue::push(new UpdateInventory($productId), null, ['DeduplicationId' => $productId . '-' . uniqid()]);
composer require with version constraints.* permissions).MessageGroupId/DeduplicationId strategies per queue.aws sqs get-queue-attributes --queue-url URL --attribute-names All.storage/logs/laravel.log for SQS errors.queue names (e.g., queue:work --queue=order-group-1).ApproximateNumberOfMessagesVisible.sqs:ReceiveMessage with WaitTimeSeconds to reduce API calls.| Failure Scenario | Impact | Mitigation |
|---|---|---|
| SQS Throttling | Job delays/spikes | Implement exponential backoff in job retries. |
| Worker Crashes | Messages stuck in "In Flight" | Set visibility_timeout < worker timeout (e.g., 300s vs. 600s). |
| Deduplication Collisions | Duplicate processing | Use composite DeduplicationId (e.g., user-id-timestamp). |
| AWS Outage | Queue unavailability | Implement a fallback to |
How can I help you explore Laravel packages today?