php - Laravel 作业被推送到队列事件

标签 php laravel queue laravel-6

在 Laravel documentationQueue::beforeQueue::after 事件。我正在寻找的是“作业推送到队列”或“作业创建”事件,例如Queue::pushed。该事件是否存在或者我如何触发该事件?

this answer我看到了 JobPushed 事件,但它来自 Laravel Horizo​​n。有没有没有地平线的方法?

Queue::before(function (JobProcessing $event) {
    // $event->connectionName
    // $event->job
    // $event->job->payload()
});

Queue::after(function (JobProcessed $event) {
    // $event->connectionName
    // $event->job
    // $event->job->payload()
});

最佳答案

您可以使用作业类的构造函数作为作业创建事件。当您创建作业对象的新实例时,就会执行作业对象构造函数。但其他函数(例如:handle() 和...)会在作业在队列中运行时执行。

此外,对于推送到队列的作业,您可以覆盖作业类的调度函数。作业对象有一个静态函数调度,它将新的作业对象插入队列。

所以您编辑的工作类别将如下所示:

<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;

class SampleJob implements ShouldQueue
{
  use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
  /**
   * Create a new job instance.
   *
   * @return void
   */
  public function __construct()
  {
    $this->created();
    // rest of code
  }

  /**
   * Execute the job.
   *
   * @return void
   */
  public function handle()
  {
  }

  public static function dispatch($job)
  {
    SampleJob::dispatch($job);
    $job->pushedToQueue();
  }

  // events 

  public function created()
  {
    // event codes
  }
  public function pushedToQueue()
  {
    // event codes
  }
}

关于php - Laravel 作业被推送到队列事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63314849/

相关文章:

Javascript onclick 函数未定义

php - 文件仅在包含时生成换行符

php - 我在 laravel 资源控制中更新功能有问题

exception-handling - Laravel 异常处理 - 如何使用 API 和 Html 处理异常

c# - 通用委托(delegate)线程

java - 如何用Java确认RabbitMQ消息?

PHP DateTime操作-设置新时区并扣除24小时

Javascript 函数根据选择选项的值选中一个框

php - 如何在PhpSpreadsheet中对齐单元格值?

php - Laravel 任务调度程序不起作用