【问题标题】:Laravel job pushed to queue eventLaravel 作业推送到队列事件
【发布时间】:2020-08-08 22:57:54
【问题描述】:

在 Laravel documentation 中有 Queue::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()
});

【问题讨论】:

  • 您可以使用 pusher 来广播队列的更新状态。如果您需要更多帮助,请告诉我

标签: php laravel queue laravel-6


【解决方案1】:

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

对于job pushed to queue 附近的东西,您可以覆盖您的作业类的调度功能。作业对象有一个静态函数调度,将一个新的作业对象推入队列。

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

<?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
  }
}

【讨论】:

    猜你喜欢
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 2017-09-12
    • 2021-06-13
    • 2017-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多