biigle/laravel-remote-queue

此包已被弃用且不再维护。未建议替代包。

将作业提交到其他 Laravel 或 Lumen 实例,并从其他实例接收作业。

v2.3.2 2020-03-31 05:58 UTC

This package is auto-updated.

Last update: 2020-11-09 12:35:57 UTC


README

将作业提交到其他 Laravel 或 Lumen 实例,并从其他实例接收作业。

Build Status

安装

composer require biigle/laravel-remote-queue

Laravel

Laravel 会自动发现服务提供者。

Lumen

$app->register(Biigle\RemoteQueue\RemoteQueueServiceProvider::class); 添加到 bootstrap/app.php

使用

此包可用于将队列作业提交到另一个 Laravel 或 Lumen 应用,从另一个应用接收作业或两者都做。

接收作业

默认情况下,此包不允许接收来自另一个应用的作业。要允许接收,将配置文件中的 remote-queue.listen 设置为 true。使用令牌来验证传入请求。在这种情况下,令牌只是一个长的随机字符串。使用 remote-queue.accept-tokens 配置接受所有令牌。所有成功验证的接收作业都将推送到此应用的“常规”队列并由队列工作进程处理。

重要:请确保作业类在提交和接收应用中都存在。

提交作业

推送到远程队列的作业将通过 HTTP 传输并在另一个应用中处理。要使用远程队列,请在配置文件中的 queue.connections 配置中使用 remote 驱动器。示例

[
   'driver' => 'remote',
   // Default queue of the remote host to push jobs to.
   'queue' => 'default',
   // The remote queue API endpoint of the remote host. Don't forget the trailing slash!
   'url' => 'http://192.168.100.100/api/v1/remote-queue/',
   // Token to use for authentication on the remote host.
   'token' => 'IoO2l7UKZfso5zQloF2XvAShEbAR5a9M8u+WBfg0HgI=',
   // Optional additional request options for the GuzzleHttp client.
   'request_options' => [],
]

现在,您可以将作业调度到远程队列连接,就像其他任何连接一样。

use App\Jobs\MyJob;

MyJob::dispatch($data)->onConnection('remote');

提交/响应模式

我们开发了此包,以便能够在具有 GPU 的远程机器上处理作业。为了返回计算结果,我们应用了所谓的“提交/响应”模式。

在此模式中,此包安装在 Laravel/Lumen 实例(让我们称它们为 A 和 B)上。在实例 A 上,远程队列配置为将作业推送到实例 B(具有 GPU 的那个)。在实例 B 上,远程队列配置为将作业推送到实例 A。新的 GPU 作业从实例 A 提交到实例 B 上的远程队列。一旦计算结果,它们作为“响应作业”返回到实例 A 上的远程队列,在那里可以进一步处理结果。

配置

您可以直接或通过环境变量覆盖 remote-queue 配置中的任何这些选项。

remote-queue.listen

默认:false 环境:REMOTE_QUEUE_LISTEN

接受并处理发送到此应用实例的作业。

remote-queue.endpoint

默认:api/v1/remote-queue 环境:REMOTE_QUEUE_ENDPOINT

接收新工作的API端点。

远程队列连接

默认值: null 环境: REMOTE_QUEUE_CONNECTION

使用此队列连接来处理接收到的作业。如果为null,则使用默认连接。

远程队列接受令牌

默认值: [] 环境: REMOTE_QUEUE_ACCEPT_TOKENS

只有当作业提供这些令牌之一时才接受作业。如果使用环境变量,请指定以逗号分隔的令牌列表。生成令牌的一种方法如下: head -c 32 /dev/urandom | base64

远程队列接受IP

默认值: []

仅从白名单中的IP地址接受请求。留空以接受所有IP的作业。

远程队列接受作业

默认值: []

仅接受此白名单中的类名的作业。留空以接受所有作业类。