gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:40:46 25 4
gpt4 key购买 nike

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

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

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

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

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

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

Lumen/Laravel 5.2 版本。

最佳答案

正如@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 的实例,那么我不知道该怎么做。

关于php - 在 Laravel 中如何创建一个队列对象并在没有 Facade 的情况下设置它们的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37356124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com