Laravel SQS Queue Reader は、外部 Webhook を Laravel アプリケーションにシームレスに統合するように設計された強力な拡張機能です。この拡張機能は、Amazon Simple Queue Service (SQS) の信頼性とスケーラビリティを活用することで、アプリケーションが受信 Webhook を効率的に処理し、ダウンタイムを最小限に抑え、全体的なパフォーマンスを向上させることを保証します。
パフォーマンスを損なうことなく、外部 Webhook を Laravel アプリケーションに簡単に統合できます。
Amazon SQS の機能を利用して受信 Webhook をキューに入れ、非同期および並列処理を可能にし、最適な応答時間を確保します。
SQS は堅牢でスケーラブルなインフラストラクチャを提供し、アプリケーションが安定性を損なうことなくさまざまな Webhook 負荷を処理できるようにします。
Laravel 拡張機能として設計された Webhook Queue Reader は、Laravel のコーディング標準と規約に従って、Laravel プロジェクトにシームレスに統合されます。
キュー名、可視性タイムアウト、その他の SQS 固有の構成など、アプリケーションの要件に合わせて拡張機能の設定をカスタマイズします。
詳細なログを使用して Webhook 処理フローを把握し、システムの効果的なトラブルシューティングと監視に役立ちます。
Webhook URL を指定して、外部 Webhook を Laravel アプリケーションに登録します。
受信 Webhook は SQS キューを通じて効率的に処理され、Webhook ペイロードの最適な処理が保証されます。
SQS の非同期処理機能を活用してバックグラウンドで Webhook を処理し、アプリケーションの応答時間への影響を防ぎます。
SQS の自動再試行のメリットを活用すると、失敗した Webhook 処理試行が手動介入なしで確実に再試行されます。
生の JSON ペイロードをサポートし、複数のメッセージを読み取る Laravel プロジェクト用のカスタム SQS キュー リーダー。 Laravel は、SQS メッセージがジョブ ハンドラー クラスとシリアル化されたジョブを含む特定の形式で生成されることを期待します。
注: キューから複数のメッセージを読み取るために実装されています。
このライブラリは、ストライプ Webhook、shopify Webhook、mailgun Web フック、カスタム JSON メッセージなどのサードパーティ アプリケーションからのメッセージを解析する場合に非常に役立ちます。
Composer 経由で Laravel のカスタム SQS キュー リーダーをインストールします。
composer require palpalani/laravel-sqs-queue-json-reader
構成ファイルを公開し、Laravel 構成ファイルで SQS 設定を構成できます。
php artisan vendor:publish --provider= " palPalaniSqsQueueReaderSqsQueueReaderServiceProvider " --tag= " config "
公開された構成ファイルの内容は次のとおりです。
/**
* List of plain SQS queues and their corresponding handling classes
*/
return [
// Separate queue handler with corresponding queue name as key.
' handlers ' => [
' stripe-webhooks ' => [
' class ' => App Jobs StripeHandler::class,
' count ' => 10 ,
],
' mailgun-webhooks ' => [
' class ' => App Jobs MailgunHandler::class,
' count ' => 10 ,
]
],
// If no handlers specified then default handler will be executed.
' default-handler ' => [
// Name of the handler class
' class ' => App Jobs SqsHandler::class,
// Number of messages need to read from SQS.
' count ' => 1 ,
]
];
キューが「handlers」配列で見つからない場合、SQS ペイロードはデフォルトのハンドラーに渡されます。
Webhook を Laravel アプリケーションに登録します。
sqs-json
接続を config/queue.php に追加します。例:
[
// Add new SQS connection
' sqs-json ' => [
' driver ' => ' sqs-json ' ,
' key ' => env ( ' AWS_ACCESS_KEY_ID ' , '' ),
' secret ' => env ( ' AWS_SECRET_ACCESS_KEY ' , '' ),
' prefix ' => env ( ' AWS_SQS_PREFIX ' , ' https://sqs.us-west-2.amazonaws.com/1234567890 ' ),
' queue ' => env ( ' AWS_SQS_QUEUE ' , ' external-webhooks ' ),
' region ' => env ( ' AWS_DEFAULT_REGION ' , ' us-west-2 ' ),
],
]
.env ファイルで、新しいデフォルトのキュードライバーとして sqs-json を選択します。
QUEUE_DRIVER=sqs-json
シームレスで信頼性が高く、スケーラブルな Webhook 処理をお楽しみください。
Laravel からプレーンメッセージをプッシュする予定がある場合は、DispatcherJob を利用できます。
use palPalani SqsQueueReader Jobs DispatcherJob ;
class ExampleController extends Controller
{
public function index ()
{
// Dispatch job with some data.
$ job = new DispatcherJob ([
' music ' => ' Ponni nathi from PS-1 ' ,
' singer ' => ' AR. Rahman ' ,
' time ' => time ()
]);
// Dispatch the job as you normally would
// By default, your data will be encapsulated in 'data' and 'job' field will be added
$ this -> dispatch ( $ job );
// If you wish to submit a true plain JSON, add setPlain()
$ this -> dispatch ( $ job -> setPlain ());
}
}
上記のコードは、次の JSON オブジェクトを SQS キューにプッシュします。
{ "job" : " App \ Jobs \ SqsHandler@handle " , "data" :{ "music" : " Sample SQS message " , "singer" : " AR. Rahman " , "time" : 1464511672 }}
実際には、「job」フィールドは使用されません。 Laravel Framework との互換性のために保持されているだけです。
次のコマンドを実行して、ディスパッチされたジョブをテストします。
php artisan queue:work sqs-json
production
の場合は、次の構成でスーパーバイザを使用します。
[program:sqs-json-reader]
process_name=%(program_name)s_%(process_num)02d
command=php /var/html/app/artisan queue:work sqs-json --sleep=60 --timeout=10 --tries=2 --memory=128 --daemon
directory=/var/html/app
autostart=true
autorestart=true
startretries=10
user=root
numprocs=1
redirect_stderr=true
stdout_logfile=/var/html/app/horizon.log
stderr_logfile=/tmp/horizon-error.log
stopwaitsecs=3600
priority=1000
複数の接続を使用している場合は、上記のスーパーバイザ設定を複製し、接続名を変更します。
サードパーティ アプリケーションまたは API Gateway to SQS 実装がカスタム形式の JSON メッセージを作成している場合は、構成ファイルにハンドラーを追加し、次のようにハンドラー クラスを実装するだけです。
use Illuminate Contracts Queue Job as LaravelJob ;
class SqsHandlerJob extends Job
{
/**
* @var null|array $data
*/
protected $ data ;
/**
* @param LaravelJob $job
* @param null|array $data
*/
public function handle ( LaravelJob $ job , ? array $ data ): void
{
// This is incoming JSON payload, already decoded to an array
var_dump ( $ data );
// Raw JSON payload from SQS, if necessary
var_dump ( $ job -> getRawBody ());
}
}
注記:
Laravel アプリケーションが、SQS と対話するために必要な AWS 認証情報とアクセス許可を使用して設定されていることを確認してください。
Laravel Webhook Queue Reader を使用して、Laravel アプリケーションの Webhook 処理機能を強化します。効率的で信頼性が高く、最適なパフォーマンスを実現するように設計されています。
AWS SQS の詳細については、公式ドキュメントを確認してください。
スクリプトはすでに構成されているので、次のコマンドを実行するだけです。
composer test
テスト カバレッジ形式の場合は、次のコマンドを実行します。
composer test-coverage
コード分析するには、次のコマンドを実行します。
composer analyse
コード形式については、次のコマンドを実行します。
composer format
最近の変更点の詳細については、CHANGELOG を参照してください。
詳細については、「貢献」を参照してください。
貢献したい場合は、実際の Laravel プロジェクトでテストしてみるとよいでしょう。
/laravel-sqs-queue-json-reader
ディレクトリに、修正用のブランチ (例: feature/awesome-feature
を作成します。アプリのcomposer.json
にパッケージをインストールします。
{
// ...
"require" : {
"palpalani/laravel-sqs-queue-json-reader" : "*" ,
} ,
"minimum-stability" : "dev" ,
"repositories" : [
{
"type" : "path" ,
"url" : "path/to/location"
}
] ,
// ...
}
ここで、 composer update
を実行します。
GrumPHP レクター タスク Laravel プロジェクトの RectorPHP を実行するタスクを含む GrumPHP。
電子メール拒否リスト (ブラックリスト) チェック - IP 拒否リスト (ブラックリスト) チェック 拒否リスト (ブラックリスト) チェッカーは、50 を超える DNS ベースの電子メール ブラックリストに対してメール サーバーの IP アドレスをテストします。 (一般にリアルタイム ブラックリスト、DNSBL、または RBL と呼ばれます)。
Spamassassin メールのスパムスコア spamassassin データベースを使用して、メール内容のスパムスコアをチェックします。
Laravel ログイン通知 Laravel プロジェクトのログイン イベント通知。デフォルトでは、実稼働環境のみに通知が送信されます。
Laravel Toastr Laravel 用のトーストr.js を実装します。 Toastr.js は、ノンブロッキング通知用の Javascript ライブラリです。
Beast Beast は、Nodejs、Chrome、Aws Lamda を使用したサービスとしてのスクリーンショットです。ヘッドレス Chrome を使用して Web ページを画像に変換する 指定された URL/HTML コンテンツのスクリーンショットを取得し、base64 でエンコードされたバッファを返します。
eコマース商品のレコメンド 顧客の注文履歴を分析し、新規顧客に商品をレコメンドすることで販売量の増加を実現します。
セキュリティの脆弱性を報告する方法については、セキュリティ ポリシーをご覧ください。
バグを見つけた場合、または質問や機能のリクエストがある場合は、詳細な問題を送信してサポートをお待ちください。
MIT ライセンス (MIT)。詳細については、ライセンス ファイルを参照してください。