Chr*_*ris 10 laravel laravel-5.1
我可以这样开始队列:
php artisan queue:listen
Run Code Online (Sandbox Code Playgroud)
这样可以正常工作,但我想监视队列是否正在运行,尤其重要,因为如果不是,那么似乎没有回退.
要清楚,如果我通过控制器排队电子邮件,如下:
$this->mailer->queue($view, $data, function ($message) use ($toEmail, $toName, $subject) {
$message
->to($toEmail, $toName)
->subject($subject);
});
Run Code Online (Sandbox Code Playgroud)
这将成功运行,但如果队列没有"侦听",则作业将永久地推送到作业表.
我正在寻找类似的东西 \Queue::isListening();
jmc*_*ory 21
这是较低级别的,但同样,您可以运行命令,例如ps -aux | grep queue在您的应用程序/队列工作人员正在运行的任何服务器上查看正在运行的队列进程。
The*_*pha 11
实际上,当队列失败failing时,事件会触发,例如,您可以使用以下内容在方法failing中的AppServiceProvider类中注册事件boot:
public function boot()
{
Queue::failing(function (JobFailed $event) {
// $event->connectionName
// $event->job
// $event->data
});
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以failed在handler类中声明一个方法,例如:
class SendEmail extends Job implements ShouldQueue
{
use InteractsWithQueue, SerializesModels;
public function handle(Mailer $mailer)
{
//...
}
public function failed()
{
//...
}
}
Run Code Online (Sandbox Code Playgroud)
Supervisor是一个客户端/服务器系统,允许其用户监视和控制类UNIX操作系统上的许多进程.
在这种情况下,您必须在计算机上安装它并使用至少一个program部分进行配置,例如:
[program:queue]
command=/usr/local/bin/php artisan queue:listen --tries=3
Run Code Online (Sandbox Code Playgroud)
这是program我用来监控我queue使用的部分示例Supervisord.在这种情况下,您需要阅读supervisord的文档以了解如何使用它,我刚刚给了您一个想法.在supervisord一旦你开始它,它还会重新启动服务器重新启动后也观察(如果它下跌出于某种原因),所以你不必担心会在后台运行.
一个简单的(最小的)配置文件可能如下所示:
[unix_http_server]
file=/tmp/supervisor.sock ; (the path to the socket file)
[supervisord]
logfile=/home/someDirName/www/example.com/supervisord.log
logfile_maxbytes=50MB
logfile_backups=10
loglevel=info
pidfile=/tmp/supervisord.pid
nodaemon=false
loglevel=warn
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///tmp/supervisor.sock
[program:queue]
command=/usr/local/bin/php artisan queue:listen --tries=3
directory=/home/someDirName/www/example.com
autostart=true
autorestart=true
redirect_stderr=true
Run Code Online (Sandbox Code Playgroud)
那么,您可以阅读文档以真正了解它.这可以帮助您开始.
Fel*_*nen 10
Laravel 8.53 引入了一个新的 artisan 命令来监控队列:
php artisan queue:monitor redis:default
Run Code Online (Sandbox Code Playgroud)
https://laravel.com/docs/8.x/queues#monitoring-your-queues