gilbertchiao/laravel-aws-sqs-helper

Laravel package for sending messages to AWS SQS

dev-main 2025-07-06 14:07 UTC

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

設定

  1. 發布設定檔

    執行以下 Artisan 指令,將設定檔 sqs-helper.php 發布到您專案的 config 目錄中:

    php artisan vendor:publish --provider="GilbertChiao\AwsSqsHelper\SqsServiceProvider" --tag="config"
  2. 設定環境變數

    在您的 .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 佇列,您需要提供 MessageGroupIdMessageDeduplicationId

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

版權

MIT