我可以从控制器触发 Laravel 作业而不是使用 `php artisanqueue` 进程吗

问题描述 投票:0回答:3

我们正在 Elastic Beanstalk 上运行我们的生产系统。我们希望能够通过自动扩展来利用 EBS 的工作层。不幸的是,由于 Laravel 队列处理的工作方式,Laravel 希望通过在服务器上启动 php 命令行进程来消耗所有队列。 EBS 工作层并非以这种方式运行。 AWS 安装了自己的侦听器守护程序,该守护程序会提取作业并通过本地 HTTP 调用将其提供给您的工作人员。听起来很棒。不幸的是,我不知道如何从 Laravel 中的路由和控制器调用排队作业,而不是使用内置的 artisan 队列侦听器任务。任何有关如何实现这一目标的线索将不胜感激。

laravel amazon-web-services amazon-elastic-beanstalk worker
3个回答
6
投票

您可以使用

Artisan::call
方法从代码中调用命令。

$exitCode = Artisan::call('queue:work');

您可以在文档中查看更多信息


3
投票

在控制器操作方法中:

JobClassName::dispatch();

0
投票

要处理通过 HTTP 控制器触发的队列作业,您必须从控制器调用

Worker::process()
,并将 Job 对象作为参数。 您可以在这个 Laravel 包中看到 example,或者您可以安装并使用该包来实现相同的结果

© www.soinside.com 2019 - 2024. All rights reserved.