在Laravel中如何创建队列对象并在没有Facade的情况下设置其连接

时间:2016-05-20 21:26:30

标签: php laravel laravel-5 laravel-5.2

在Lumen / Laravel中我想向给定的队列发送消息。

默认情况下,我将它设置为Redis,我希望将其发送到另一个队列服务器,因为另一个应用程序将处理它。

我知道我可以做$queue->pushRaw('payload');但是我没有后续的方法可以选择连接。

我知道我可以使用Facade来创建我的队列:

$connection = Queue::connection('connection_name');
$connection->pushOn('queue_name', $job)

然而,我在Lumen这样做,并且希望避免在这方面打开Facade。另外,我想知道如何做到这一点,因为我希望最终通过IoC通过作业事件处理程序。

Lumen / Laravel 5.2版本。

1 个答案:

答案 0 :(得分:3)

正如@ Mois44所暗示的那样,你应该可以使用QueueManager来完成这个任务。

QueueManager允许您调用connection()方法,该方法将返回Queue对象。从这里,您可以调用正常的排队函数(pushOn,laterOn等)

// Returns an Illuminate\Queue\QueueManager object
$queueManager = app('queue'); 

// Returns an Illuminate\Queue\Queue object
$queue = $queueManager->connection('my-connection'); 

$queue->pushOn('queue_name', $job);

或全部链接在一起

app('queue')->connection('my-connection')->pushOn('queue_name', $job)

不可否认,我的Lumen具体知识非常有限。如果app()方法无法获取QueueMananger的实例,那么我不知道该怎么做。