Laravel Failed Job Monitor 使用教程
1. 项目的目录结构及介绍
Laravel Failed Job Monitor 项目的目录结构遵循标准的 Laravel 包结构。以下是主要目录和文件的介绍:
laravel-failed-job-monitor/
├── src/
│ ├── FailedJobMonitorServiceProvider.php
│ ├── Notification.php
│ ├── NotificationFilter.php
│ └── config/
│ └── failed-job-monitor.php
├── tests/
│ └── Unit/
│ └── NotificationFilterTest.php
├── README.md
├── LICENSE
├── composer.json
└── composer.lock
src/
:包含包的核心代码。FailedJobMonitorServiceProvider.php
:服务提供者,用于注册和配置包。Notification.php
:通知类,用于处理失败任务的通知。NotificationFilter.php
:通知过滤器,用于过滤通知。config/
:配置文件目录。failed-job-monitor.php
:配置文件,用于配置通知方式和其他选项。
tests/
:包含单元测试。Unit/
:单元测试目录。NotificationFilterTest.php
:通知过滤器的单元测试。
README.md
:项目说明文档。LICENSE
:许可证文件。composer.json
:Composer 配置文件。composer.lock
:Composer 锁定文件。
2. 项目的启动文件介绍
项目的启动文件是 FailedJobMonitorServiceProvider.php
,它负责注册和配置包。以下是该文件的主要内容:
namespace Spatie\FailedJobMonitor;
use Illuminate\Support\ServiceProvider;
class FailedJobMonitorServiceProvider extends ServiceProvider
{
public function boot()
{
$this->publishes([
__DIR__.'/../config/failed-job-monitor.php' => config_path('failed-job-monitor.php'),
], 'config');
$this->mergeConfigFrom(__DIR__.'/../config/failed-job-monitor.php', 'failed-job-monitor');
$this->app['queue']->failing(function ($event) {
$notification = new Notification($event);
$notifiable = $this->app->make(config('failed-job-monitor.notifiable'));
if (config('failed-job-monitor.notificationFilter')) {
$filter = $this->app->make(config('failed-job-monitor.notificationFilter'));
if (!$filter($notification)) {
return;
}
}
$notifiable->notify($notification);
});
}
public function register()
{
//
}
}
boot()
方法:负责发布配置文件和注册失败任务的监听器。register()
方法:目前为空,但可以用于注册其他服务。
3. 项目的配置文件介绍
配置文件 failed-job-monitor.php
位于 src/config/
目录下,用于配置通知方式和其他选项。以下是配置文件的主要内容:
return [
'notifiable' => \App\CustomNotifiableForFailedJobMonitor::class,
'notificationFilter' => function (Spatie\FailedJobMonitor\Notification $notification): bool {
return true;
},
'channels' => ['mail', 'slack'],
'mail' => [
'to' => ['email@example.com'],
],
'slack' => [
'webhook_url' => env('FAILED_JOB_SLACK_WEBHOOK_URL'),
],
];
notifiable
:指定自定义的通知类。notificationFilter
:通知过滤器,用于过滤通知。channels
:通知渠道,支持mail
和slack
。mail
:邮件配置,指定接收邮件的地址。slack
:Slack 配置,指定 Webhook URL。
通过配置文件,可以灵活地设置通知方式和接收者,确保在队列任务失败时能够及时收到通知。