English | العربية | বাংলা | Bosanski | Deutsch | Español | Français | हिन्दी | Italiano | 日本語 | 한국어 | मराठी | Português | Русский | Kiswahili | தமிழ் | తెలుగు | Türkçe | اردو | Tiếng Việt | 中文
Laravel SQS Extended
はじめに
Laravel SQS Extendedは、AWS SQSのペイロードサイズ制限を回避するために設計されたLaravelキュードライバです。このキュードライバは、大きなペイロードを自動的にディスク(通常はS3)にシリアライズし、実行時にそれらをアンシリアライズします。このパッケージは、https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-s3-messages.htmlにインスパイアを受けています。
Simple SQS Extended Clientからの移行
- プロジェクトから
simplesoftwareio/simple-sqs-extended-clientパッケージを削除します。 defectivecode/laravel-sqs-extendedパッケージをインストールします。
古い設定は新しいパッケージと互換性があります。変更点はパッケージ名だけです。
インストール
- まず、すべての大きなSQSペイロードを保存するためのバケットを作成してください。
SQSペイロードを保存する際は、_プライベート_バケットを使用することを強く推奨します。ペイロードには機密情報が含まれる可能性があり、公開されるべきではありません。
-
composer require defectivecode/laravel-sqs-extendedを実行してキュードライバをインストールします。 -
次に、以下のデフォルトキュー設定を
queue.phpファイルに追加します。
Laravel Vaporユーザーは接続名を
sqsに設定する必要があります。sqs接続はVapor Core内で探され、このライブラリが別の接続名を使用すると期待通りに動作しません。
/*|--------------------------------------------------------------------------| SQSディスクキューの設定|--------------------------------------------------------------------------|| ここでは、SQSディスクキュードライバを設定できます。これは、内蔵のLaravel SQSキュードライバと同じ| 設定オプションをすべて共有します。追加されたオプションは以下に説明されている`disk_options`のみです。|| always_store: すべてのペイロードをキューのサイズ制限に関係なくディスクに保存するかどうかを決定します。| cleanup: ジョブが処理された後にペイロードファイルをディスクから削除するかどうかを決定します。ファイルを残しておくことは| デバッグの理由で後でキュージョブを再生するために便利です。| disk: SQSペイロードを保存するディスク。このディスクはLaravelのfilesystems.php設定ファイルで構成する必要があります。| max_size: オプション。オフロードのしきい値を固定のバイト数に設定します。省略すると、しきい値は| キュー自体から読み取られます。「ペイロードサイズのしきい値」を参照してください。| prefix ペイロードを保存するためのプレフィックス(フォルダ)。これは、他のSQSキューとディスクを共有している場合に便利です。| プレフィックスを使用すると、queue:clearコマンドが同じディスクを共有している他のsqs-diskバックアップキューから| ファイルを個別に破棄できます。|*/'sqs' => [ 'driver' => 'sqs-disk', 'key' => env('AWS_ACCESS_KEY_ID'), 'secret' => env('AWS_SECRET_ACCESS_KEY'), 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), 'queue' => env('SQS_QUEUE', 'default'), 'suffix' => env('SQS_SUFFIX'), 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), 'after_commit' => false, 'disk_options' => [ 'always_store' => false, 'cleanup' => false, 'disk' => env('SQS_DISK'), 'prefix' => 'bucket-prefix', ],],
- キューを起動し、SQSのペイロード制限を気にせずに利益を得ましょう 🥳
ペイロードサイズのしきい値
AWSは2025年8月に最大SQSペイロードを256 KiBから1 MiBに引き上げましたが、MaximumMessageSizeはキューごとの属性です — その変更の前に作成されたキューは、引き上げるまで古い262144バイトの値を保持します。どちらの制限を仮定するのではなく、このパッケージはキューから属性を読み取り、実際に収まらないものだけをオフロードします。
しきい値は以下の順序で解決され、最初の一致が勝ちます。ペイロードの長さが解決されたしきい値以上の場合、ディスクに保存されます。
| 条件 | しきい値 | キュー属性を読み取る |
|---|---|---|
always_storeがtrue |
すべてのペイロードが保存される | いいえ |
max_sizeが設定されている |
設定された値 | いいえ |
キューが262144を報告(2025年以前のデフォルト) |
250000 | はい |
キューが1048576を報告(最大に引き上げられた) |
1036432 | はい |
| 属性が読み取れない | 250000 | 一度試行 |
12144バイトの予約ヘッドルームはメッセージごとのオーバーヘッドをカバーし、キューが262144バイトのデフォルトのままにされると、このパッケージの以前のバージョンで使用される250000バイトのしきい値に解決されるようになっています。キューの制限を引き上げるまで、アップグレードは動作を変更しません。
権限
属性を読むにはSQS:GetQueueAttributesが必要です。その結果はキューごとにメモリにキャッシュされるため、プロセスの期間中はキューごとに1回の呼び出しが行われ、ジョブごとではありません。
属性が読み取れない場合 — 狭いIAMポリシー、またはそれを実装していないSQSエミュレーター — ドライバは250000バイトのしきい値にフォールバックし、配信を続けます。権限を付与したくない場合はmax_sizeを設定して、ルックアップを完全にスキップできます。
キューの制限を引き上げる
aws sqs set-queue-attributes \ --queue-url https://sqs.us-east-1.amazonaws.com/your-account-id/your-queue \ --attributes MaximumMessageSize=1048576
SQSは使用量を64 KBのチャンクでメーターしますので、単一の1 MiBメッセージは16リクエストとして請求されます。大きなペイロードをディスクに保存することは、しばしばより安価な方法です。
サポートガイドライン
私たちのオープンソースパッケージを選んでいただきありがとうございます!これらのサポートガイドラインを確認するための時間を取ってください。プロジェクトを最大限に活用する助けになるでしょう。
コミュニティ主導のサポート
私たちのオープンソースプロジェクトは、素晴らしいコミュニティによって支えられています。質問がある場合や支援が必要な場合は、StackOverflowやその他のオンラインリソースが最良の選択です。
バグと機能の優先順位付け
オープンソースプロジェクトを管理する現実として、報告されたすべてのバグや機能リクエストに即座に対応することはできません。以下の順序で問題を優先します。
1. 有料製品に影響を与えるバグ
有料製品に影響を与えるバグは常に最優先事項となります。場合によっては、私たちに直接影響を与えるバグのみを扱うことがあります。
2. コミュニティのプルリクエスト
バグを特定し、解決策を持っている場合は、プルリクエストを提出してください。私たちの製品に影響を与える問題の次に、これらのコミュニティ主導の修正に対して最も高い優先順位を与えます。レビューと承認が行われた後、あなたの解決策をマージし、貢献を認めます。
3. 財政的サポート
上記のカテゴリー以外の問題については、その解決に資金を提供することができます。各オープンイシューには、財政的に貢献できる注文フォームへのリンクがあります。提供された資金額に基づいて、これらの問題を優先します。
コミュニティの貢献
オープンソースは、そのコミュニティが活発であるときに栄えます。バグを修正していない場合でも、コード改善、ドキュメントの更新、チュートリアルの作成、またはコミュニティチャネルで他の人を支援することで貢献を考えてください。私たちは、コミュニティとしてオープンソースの仕事を支援することを皆さんに強く奨励します。
繰り返しになりますが、DefectiveCodeは、有料製品にどのように影響を与えるか、コミュニティのプルリクエスト、そして問題に対して受け取った財政的サポートに基づいてバグを優先します.
ライセンス - MITライセンス
著作権 © Defective Code, LLC. 全著作権を保有します。
本ソフトウェア及び関連する文書ファイル(以下「ソフトウェア」)のコピーを取得したすべての人に対して、無償で本ソフトウェアを制限なく利用する権利、使用、複製、修正、統合、出版、配布、サブライセンス、及び/またはソフトウェアのコピーを販売する権利を許可し、ソフトウェアが提供される人々にもそれを行うことを許可します。ただし、以下の条件に従います:
上記の著作権表示とこの許可通知は、ソフトウェアのすべてのコピーまたは重要な部分に含まれるものとします。
ソフトウェアは「現状のまま」提供され、いかなる種類の保証もなく、明示または暗示を問わず、商業性、特定の目的への適合性および非侵害の保証を含むが、これに限定されない保証はありません。著作者または著作権者は、契約、不法行為、またはその他の方法によるいかなる請求、損害、またはその他の責任についても、ソフトウェアまたはソフトウェアの使用またはその他の取り扱いに起因する場合において、一切の責任を負わないものとします。