Laravel 队列和 Azure WebJob

Posted

技术标签:

【中文标题】Laravel 队列和 Azure WebJob【英文标题】:Laravel queue And Azure WebJob 【发布时间】:2021-10-19 10:44:53 【问题描述】:

我在 Azure 应用服务中有一个 Laravel 项目.. 我正在使用 Laravel 队列在后台运行长作业,所以我添加了一个 WebJob 来运行队列..问题是作业顺序执行而不是并行执行。

经过搜索,我发现我需要一个主管来运行多个工人。

我的问题是如何让多个工作人员在 Azure 中运行同一个队列??

我的连续 WebJob:

php %HOME%\site\wwwroot\artisan queue:listen --timeout=0

【问题讨论】:

【参考方案1】:

根据我对问题的理解。连续作业在运行 Web 应用程序的所有实例上运行。实际上,您可以选择将 WebJob 限制为单个实例(在您的情况下有所不同)。

请注意,应用服务只会在该作业的根目录下查找脚本(而不是在其子目录下)。仅列出了这些受支持的脚本或程序文件类型here:

Laravel,使用 public/ 子目录作为站点根目录。

通过将它们复制到 d:\home\site\wwwroot 来部署作业,如下所示。这些作业将在 SCM\Kudu 网站的工作进程下运行,而不是主站点。

路径:wwwroot\app_data\jobs\continuousjob name)。

要在部署期间将连续作业设置为单例,您可以简单地创建一个名为 settings.job 的文件,其内容为: "is_singleton": true 并将其放在(特定)WebJob 目录的根目录中。但是,在您的情况下 "is_singleton": false

如果您的要求符合您的要求,您可以使用WebJobs API 或Azure Functions

【讨论】:

以上是关于Laravel 队列和 Azure WebJob的主要内容,如果未能解决你的问题,请参考以下文章

Azure 存储队列 - 异地冗余

Azure Functions:如何在 Azure 存储队列的绑定表达式中使用 POCO?

是否可以使用 Azure 资源管理器 API 向队列或主题发送和检索消息

Azure 队列中基于租约和基于锁的独占访问之间的区别

如何获取文件、表和队列的 Azure 存储中所有服务的大小?在 JAVA 中

在 Azure 函数中使用 BrokeredMessage 和 ServiceBus 队列触发器