dnxlabs / laravel-queue-aws-batch
Laravel Queue for AWS Batch,允许用户将作业提交到Batch队列进行处理。
Requires
- aws/aws-sdk-php: ^3.20.6
- illuminate/support: >5.4
Requires (Dev)
- laravel/framework: ^6.0
- mockery/mockery: ^0.9.6
- phpunit/phpunit: ~8.2
- scrutinizer/ocular: ^1.3
- squizlabs/php_codesniffer: >2.8
- dev-master
- v3.0.8
- v3.0.6
- v3.0.5
- v3.0.4
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v2.0.1
- v2.0.0
- v1.1.1
- v1.1.0
- 1.0.x-dev
- v1.0.2
- v1.0.1
- v1.0.0
- v0.2.1
- v0.2.0
- v0.1.1
- v0.1.0
- dev-bug/FixOptionalConnectionParameter
- dev-bug/fixOptionalConnectionInformation
- dev-feature/addConnectionInformation
- dev-feature/6.xLaravelSupport
- dev-fix_without_overrides
- dev-job_container_overrides
This package is not auto-updated.
Last update: 2024-09-27 20:18:58 UTC
README
支持版本
安装
请参阅上表中的包版本信息,并根据需要进行相应更改。
将自定义仓库添加到您的composer json
"require": {
"dnxlabs/laravel-queue-aws-batch": "~3.0.0"
},
"repositories": [
{
"type": "vcs",
"url": "git@github.com:dnxlabs/laravel-queue-aws-batch.git"
}
]
使用composer
,运行
composer require dnxlabs/laravel-queue-aws-batch ~3.0
使用方法
-
您的Laravel应用程序需要被docker化并推送到您选择的容器注册库。应将
ENTRYPOINT
设置为artisan
。 -
将新的队列添加到您的
config/queues.php
配置文件的connections
数组中
[
'batch' => [
'driver' => 'batch',
'table' => 'jobs',
'queue' => 'first-run-job-queue',
'jobDefinition' => 'my-job-definition',
'expire' => 60,
'region' => 'us-east-1'
]
]
此队列传输依赖于能够将其队列作业写入数据库队列。在这个例子中,它将作业写入到jobs
表。您需要使用artisan queue:table
来创建一个迁移来创建此表。
-
创建一个与
queue
配置设置同名AWS Batch作业队列。这是批处理连接器将您的作业推入批处理的地方。在这种情况下,我的队列名称将是first-run-job-queue
。 -
为每个定义的队列创建一个类似以下的AWS Batch作业定义
{ "jobDefinitionName": "my-laravel-application", "type": "container", "parameters": {}, "retryStrategy": { "attempts": 10 }, "containerProperties": { "image": "<your docker image>", "vcpus": 1, "memory": 256, "command": [ "queue:work-batch", "Ref::jobId", "--tries=3" ], "volumes": [], "environment": [], "mountPoints": [], "ulimits": [] } }
在此处,您配置您的容器启动,运行queue:work-batch
命令(假设artisan
是您的入口点)并传递队列名称,first-run-job-queue
以及Ref::jobId
参数,该参数是在批处理连接器创建作业时传递的。
如果您提供了该参数,您需要配置一个具有比您运行的tries
更多的"尝试"次数的重试策略。否则,如果作业失败,批处理将不会重试您的作业。Laravel 5.1在作业失败超过next次运行之前不会写入失败的作业队列。较新版本将在同一运行中写入队列,因此此要求可以稍后放宽。
- 将服务提供程序添加到您的应用程序中
- 在
config/app.php
中将以下内容添加到providers
数组中:DNXLabs\LaravelQueueAwsBatch\BatchQueueServiceProvider::class
- 在
限制
延迟作业
AWS Batch没有延迟作业的方法,作为我们的运行者,我们没有简单的解决方案。如果您需要延迟作业来满足您的使用情况,目前我的建议是使用常规DB队列,并触发一个作业进入它,以便在正确的时间触发批处理作业。