-
Notifications
You must be signed in to change notification settings - Fork 6
【メール】キューキック #905
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
調査キューテーブルを作成するコマンドを実行したところ、下記エラーが発生。 下記にあった。
jobクラスも下記にあり。 作業途中か不明のため、要確認。手を付けられず。 キューテーブル作成コマンドエラー
|
調査2と検討おおまかに、キューに溜めこむ部分と、キューを実行する(キューワーカ)部分に別れる。 対応案:キューの溜めこみ
設定変更config/queue.php デフォルト(初期値)はsync 対応案:キューワーカ案4でいく 案4:\Symfony\Component\Process\Process を使って非同期で
|
追加調査・対応メモJobのリトライさせない =
|
再調査Process は現時点では使えない事がわかったので、古式ゆかしいexecで対応見直しかなぁと。 詳細・\Symfony\Component\Process\Process を使って非同期処理。 ・Process の非同期は、親プロセスが止まると強制停止される仕様だった。 $process = new Process(['...', '...', '...']);
// this option allows a subprocess to continue running after the main script exited
$process->setOptions(['create_new_console' => true]); 参考URL |
2重起動時の問題検証https://qiita.com/mpyw/items/15d14d920250a3b9eb5a 結果、問題なしでした。 詳細※ キューワーカA, Bはどちらも キュー1をキューワーカAが処理中に、キューワーカBが起動した場合
jobsテーブル
キュー1をキューワーカAが処理中に、キュー2を追加してキューワーカBが起動した場合
それぞれ別のキューを処理するため、問題なし。 2つのキューワーカA、Bが常駐してる時に、キュー1がきた場合
⇒ 問題なし。 |
追加調査 2つのキュー1、2があり、1つ目で失敗した場合タイムアウトを20秒、Jobで タイムアウト20秒 $php_artisan_command = "{$php} \"{$artisan}\" queue:work --stop-when-empty --timeout=20"; ・結果、キュー1で失敗⇒ 失敗したキューは failed_jobs に入りました。 failed_jobsテーブルキュー1
コマンドで確認
jobsテーブルキュー2
失敗jobのリトライリトライコマンドを実行したら、failed_jobsテーブル⇒jobsテーブルに移動しました。 リトライコマンド $ php artisan queue:retry 1
The failed job [1] has been pushed back onto the queue! failed_jobsテーブル⇒空 jobsテーブル(id=25) キュー2
キューワーカ実行(全てのJob実行したら自動停止) $ php artisan queue:work --stop-when-empty --timeout=3600
[2021-07-09 18:07:17][25] Processing: App\Jobs\PostNoticeJob
[2021-07-09 18:07:17][25] Processed: App\Jobs\PostNoticeJob
[2021-07-09 18:07:17][26] Processing: App\Jobs\PostNoticeJob
[2021-07-09 18:07:17][26] Processed: App\Jobs\PostNoticeJob これで失敗Jobが再実行されました。 |
キューのguiは必要かなぁ?要検討 【Laravel】データベースキューを GUI で監視するためのライブラリ Laravel-Queue-Monitor の紹介 laravel6 も対応してそう。 ルーティングは/manage/jobs/ に変更して別ウィンドウ表示とかかなぁ。 |
デバッグの初動調査が早くなりそうですしアリかと思います。 |
サンキュー。月曜にでも試し実装してみる |
・QUEUE_CONNECTION=sync もどす。.env |
対応しました。 概要・キューをセット後に非同期でキューワーカを実行します。 【利点】 ※ キューのメールJobは自動リトライしません。 ・メールの「送信方式」は削除して1本化。 要設定変更:キュードライバを database に変更する。.env ###QUEUE_CONNECTION=sync
QUEUE_CONNECTION=database ※ 以下は既に対応済み
※ キューは2重起動するのか動作検証修正後画面メール設定「送信方式」がなくなりました。修正プログラムhttps://github.com/opensource-workshop/connect-cms/pull/925/files |
キューワーカのテスト前提メモ
詳細:windows ではタイムアウトが機能しない
|
現在のメール送信は、即時送信のみです。
Laravelのメールキューに溜めてから、別途送信できるように対応したい。
参考URL
The text was updated successfully, but these errors were encountered: