gilbertchiao / laravel-aws-sqs-helper
Laravel package for sending messages to AWS SQS
dev-main
2025-07-06 14:07 UTC
Requires
- php: ^8.1
- aws/aws-sdk-php: ^3.0
- illuminate/support: ^10.0|^11.0
Requires (Dev)
- orchestra/testbench: ^8.0
- phpunit/phpunit: ^10.0
This package is auto-updated.
Last update: 2025-07-06 14:10:00 UTC
README
一個簡單易用的 Laravel 套件,用於將訊息發送到 AWS SQS。支援 FIFO 佇列,並可輕鬆與 AWS Lambda 等服務整合。
特性
- 簡易的設定
- 透過 Facade 提供流暢的 API
- 支援標準佇列和 FIFO 佇列
- 可自訂 AWS 憑證、區域等設定
安裝
透過 Composer 安裝套件:
composer require gilbertchiao/laravel-aws-sqs-helper
設定
-
發布設定檔
執行以下 Artisan 指令,將設定檔
sqs-helper.php
發布到您專案的config
目錄中:php artisan vendor:publish --provider="GilbertChiao\AwsSqsHelper\SqsServiceProvider" --tag="config"
-
設定環境變數
在您的
.env
檔案中,加入以下設定:AWS_ACCESS_KEY_ID=your-aws-access-key AWS_SECRET_ACCESS_KEY=your-aws-secret-key AWS_DEFAULT_REGION=us-east-1 SQS_QUEUE_URL=your-standard-queue-url SQS_QUEUE_URL_FIFO=your-fifo-queue-url
AWS_*
變數是您的 AWS 憑證。如果您在 EC2 上使用 IAM 角色,可以將它們留空。SQS_QUEUE_URL
是您的標準 SQS 佇列網址。SQS_QUEUE_URL_FIFO
是您的 FIFO SQS 佇列網址。
使用方式
您可以使用 Sqs
Facade 來發送訊息。
發送到標準佇列
use GilbertChiao\AwsSqsHelper\Facades\Sqs; $message = [ 'event' => 'order_created', 'data' => [ 'order_id' => 123, 'amount' => 99.99 ] ]; $messageId = Sqs::send($message); if ($messageId) { echo "訊息已成功發送,ID: {$messageId}"; }
發送到 FIFO 佇列
若要發送到 FIFO 佇列,您需要提供 MessageGroupId
和 MessageDeduplicationId
。
use GilbertChiao\AwsSqsHelper\Facades\Sqs; $message = [ 'event' => 'user_registered', 'data' => [ 'user_id' => 'abc-123', 'timestamp' => now()->toIso8601String() ] ]; // 使用 useFifo() 方法切換到 FIFO 佇列 $messageId = Sqs::useFifo()->send($message, [ 'MessageGroupId' => 'user-events', 'MessageDeduplicationId' => uniqid() // 確保訊息的唯一性 ]); if ($messageId) { echo "FIFO 訊息已成功發送,ID: {$messageId}"; }
測試
執行以下指令來運行專案的測試:
./vendor/bin/phpunit