Laravelメッセージキュー
2238 ワード
Laravelメッセージキュー##
本明細書で説明するメッセージキューはBeanstalkdに基づいており、いくつかの煩雑なタスクはメッセージキューに格納され、バックグラウンドで非同期に処理されます.このシリーズを読み、実践すると、直結DBよりも多くの同時性を向上させる多層サービスアーキテクチャを構築できます. LNMP結合PHPフレームLaravelの使用 Laravel結合Redis 本論文 一、設定##
1.コンフィギュレーションファイルのconfig/queueを変更する.php環境変数を修正する.env QUEUE_DRIVERをbeanstalkdに設定
公式ドキュメントには、タスクが同期的に実行されるようにする手順はありません.構成を忘れないでください.
composerを使用してpda/pheanstalk~3.0拡張をインストールします.
二、beanstalkd##をインストールする
beanstalkdのインストール
開始
三、作成コマンド##
データベース操作やピクチャ処理などのタスクを実行するコマンドを作成します.
cdはあなたのエンジニアリングディレクトリの下で、次のコマンドを実行して、コマンドを生成します.
artisanはあなたのCommandsディレクトリにTestQueueToEchomsgクラスを生成します.handleメソッドが含まれています.あなたのタスクはここで実行されます.
ここではタスクが予定通り実行されるかどうかをテストするだけで、簡単にlogを打つだけでいいです.handleの方法は以下の通りです.
四、coding## router.phpは、次のコード を追加する. QueueControllerには、次のコード が追加されています.
五、傍受キュー##
次のコマンドを実行して、キューをリスニングします.新しいタスクがある場合、プログラムはそれをリスニングして実行します.
六、列を走らせて!
ブラウザに入力できるようになりましたhttp://host/toQueue/helloを選択し、storage/logs/今日のlogファイルを開くと、ログが打たれ、非同期であることがわかります.
本明細書で説明するメッセージキューはBeanstalkdに基づいており、いくつかの煩雑なタスクはメッセージキューに格納され、バックグラウンドで非同期に処理されます.このシリーズを読み、実践すると、直結DBよりも多くの同時性を向上させる多層サービスアーキテクチャを構築できます.
Redis Cache DB
1.コンフィギュレーションファイルのconfig/queueを変更する.php
default `beanstalkd`, connections beanstalkd,beanstalkd ,
公式ドキュメントには、タスクが同期的に実行されるようにする手順はありません.構成を忘れないでください.
二、beanstalkd##をインストールする
sudo yum install beanstalkd
beanstalkdのインストール
sudo service beanstalkd start
開始
三、作成コマンド##
データベース操作やピクチャ処理などのタスクを実行するコマンドを作成します.
cdはあなたのエンジニアリングディレクトリの下で、次のコマンドを実行して、コマンドを生成します.
php artisan make:command TestQueueToEchoMsg --queued
artisanはあなたのCommandsディレクトリにTestQueueToEchomsgクラスを生成します.handleメソッドが含まれています.あなたのタスクはここで実行されます.
ここではタスクが予定通り実行されるかどうかをテストするだけで、簡単にlogを打つだけでいいです.handleの方法は以下の通りです.
public function handle()
{
Log::info('at '.time().' log by queue and the msg is:'.$this->msg);
}
四、coding##
Route::get('toQueue/{msg}', 'QueueController@triggerQueue');
public function triggerQueue( $msg ){
Log::info('ready to trigger2');
$this->dispatch(new TestQueueToEchoMsg($msg)); //commond bus ,
// $date = Carbon::now()->addSeconds(15);
// // $date = Carbon::now()->addMinutes(15);
// Queue::later($date, new TestQueueToEchoMsg($msg)); // ,
// Queue::push( new TestQueueToEchoMsg($msg)); // ,
Log::info('triggered');
echo "trgiered2";
}
五、傍受キュー##
次のコマンドを実行して、キューをリスニングします.新しいタスクがある場合、プログラムはそれをリスニングして実行します.
php artisan queue:listen
六、列を走らせて!
ブラウザに入力できるようになりましたhttp://host/toQueue/helloを選択し、storage/logs/今日のlogファイルを開くと、ログが打たれ、非同期であることがわかります.