我在Laravel中使用以下代码来触发作业,该作业位于不同的代码库中。
<?php
use Illuminate\Queue\Capsule\Manager;
/**
* Class TriggerJob
*
*/
class TriggerJob
{
/**
* Queue manager.
*
* @var Manager
*/
private $queue;
/**
* @var $connection
*/
private $connection;
/**
* @var $queueName
*/
private $queueName;
/**
* TriggerJob constructor.
*
* @param Manager $queue
*/
public function __construct(Manager $queue)
{
$this->queue = $queue;
$this->queueName = 'default';
$this->connection = 'beanstalkd';
$this->setUpConnection();
}
/**
* @return mixed
* @return mixed
*/
public function trigger()
{
return $this
->queue
->getConnection($this->connection)
->push('Job', ['payload'=>'message'], $this->queueName);
}
/**
* To setup connection
*/
private function setUpConnection()
{
$container = $this->queue->getContainer();
$container['config']['queue.default'] = env('QUEUE_DRIVER');
$this->queue->setContainer($container);
}
}
当我调用trigger()
函数时,可以在Beanstalk控制台中看到创建了一个作业。但是该作业没有任何作业数据。相同的代码可在Laravel 5.4中使用,但不适用于Laravel 5.8