如何在Laravel上同步调度队列作业?

问题描述 投票:0回答:1

就像标题上说的那样,当我写下这段话的时候。kernel.php

$schedule->job(new Heartbeat)->everyFiveMinutes();

它是异步运行代码的,有什么办法可以让我做一个 dispatchNow() 按计划进行?

我使用的是Laravel 7

php laravel queue jobs schedule
1个回答
1
投票

你可以使用 onConnection 方法来即时设置驱动程序。

$schedule->job((new Heartbeat)->onConnection('sync'))->everyFiveMinutes();

另一个选项 可在调用 job 方法,设置 connection.

/**
 * Add a new job callback event to the schedule.
 *
 * @param  object|string  $job
 * @param  string|null  $queue
 * @param  string|null  $connection
 * @return \Illuminate\Console\Scheduling\CallbackEvent
 */
public function job($job, $queue = null, $connection = null)
{
    return $this->call(function () use ($job, $queue, $connection) {
        $job = is_string($job) ? Container::getInstance()->make($job) : $job;

        if ($job instanceof ShouldQueue) {
            $this->dispatchToQueue($job, $queue ?? $job->queue, $connection ?? $job->connection);
        } else {
            $this->dispatchNow($job);
        }
    })->name(is_string($job) ? $job : get_class($job));
}
© www.soinside.com 2019 - 2024. All rights reserved.