在Laravel中,如何创建一个队列对象并在没有外观的情况下设置它们的连接



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

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

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

我知道我可以使用外观来创建我的队列,如下所示:

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

但是,我在Lumen中执行此操作,并且希望避免仅出于此方面打开立面。另外,我想知道如何做到这一点,因为我想最终通过作业事件处理程序传递 IoC。

Lumen/Laravel 5.2 的版本。

正如@Mois44提到的,你应该能够使用QueueManager完成此操作。

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

// Returns an IlluminateQueueQueueManager object
$queueManager = app('queue'); 
// Returns an IlluminateQueueQueue object
$queue = $queueManager->connection('my-connection'); 
$queue->pushOn('queue_name', $job);

或全部链接在一起

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

诚然,我的流明特定知识非常有限。如果 app() 方法无法获取 QueueMananger 的实例,那么我不确定该怎么做。

最新更新