Get notified and execute PHP callback when you have stuck jobs for a defined number of hours.
Notifications can be sent by mail, Slack and webhooks (chats often provide a webhook API).
Found this package helpful? Please consider supporting my work!
Laravel version | PHP version | Package version |
---|---|---|
^9.0 | ^10.0 | 8.1.* | 8.2.* | ^2.4 |
^8.0 | ^9.0 | ^8.1 | ^8.2 | ^2.3 |
^8.0 | ^9.0 | ^8.0 | ^8.1 | ^2.2 |
^7.0 | ^8.0 | ^7.4 | ^8.0 | ^2.1 |
^7.0 | ^8.0 | ^7.4 | ^2.0 |
^6.0 | ^7.0 | ^7.4 | ^1.0 |
Install the package with composer:
composer require okipa/laravel-stuck-jobs-notifier
If you intend to send Slack
notifications you will have to install:
composer require laravel/slack-notification-channel
If you intend to send webhook
notifications you will have to install:
composer require laravel-notification-channels/webhook
Publish the package configuration:
php artisan vendor:publish --tag=stuck-jobs-notifier:config
All words and sentences used in this package are translatable.
See how to translate them on the Laravel official documentation: https://laravel.com/docs/localization#using-translation-strings-as-keys.
Here is the list of the words and sentences available for translation by default:
* {1}[:app - :env] :count job is stuck in queue|[2,*][:app - :env] :count jobs are stuck in queue
* {1}We have detected that :count job is stuck in the [:app - :env](:url) queue since the :day at :hour.|[2,*]We have detected that :count jobs are stuck in the [:app - :env](:url) queue since the :day at :hour.
* Please check your stuck jobs connecting to your server and executing the "php artisan queue:failed" command.
* {1}`[:app - :env]` :count job is stuck in the :url queue since the :day at :hour.|[2,*]`[:app - :env]` :count jobs are stuck in the :url queue since the :day at :hour.
* {1}:count job is stuck in queue since the :day at :hour.|[2,*]:count jobs are stuck in queue since the :day at :hour.
* Notification test:
* Exception test:
Just add this command in the schedule()
method of your \App\Console\Kernel
class:
$schedule->command('queue:stuck:notify')->twiceDaily(10, 16);
And you will be notified as soon as some jobs will be stuck in the failed_jobs
table for the number of days you configured.
Once everything has been set up, you can check if the configuration is correct by simulating stuck jobs detection:
php artisan queue:stuck:simulate
composer test
Please see CHANGELOG for more information what has changed recently.
Please see CONTRIBUTING for details.
The MIT License (MIT). Please see License File for more information.