首页 文章

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

提问于
浏览
5

在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 回答

  • 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的实例,那么我不知道该怎么做 .

相关问题