tarantool / jobserver
用于创建和处理后台任务的框架应用程序。
Requires
- php: ^7.1
- ocramius/package-versions: ^1.3
- rybakit/arguments-resolver: ^0.5.1
- symfony/console: ^3.4
- tarantool/jobqueue: dev-listener
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.10
- phpunit/phpunit: ^6.5
Replaces
This package is auto-updated.
Last update: 2024-09-16 02:40:24 UTC
README
JobServer 是一个用于创建和处理由 Tarantool 支持的后台任务的框架应用程序的骨架仓库。它包含您从零开始快速启动所需的配置文件和文件夹。
安装
创建新应用程序的推荐方法是使用 Composer
composer create-project tarantool/jobserver -s dev
快速开始
首先,通过复制 docker-compose.override.yml.dist(或者如果您想测试包括具有自动故障转移和监控工具的 Tarantool 集群的完整设置,则复制 docker-compose.override.yml.full.dist)并根据自己的需求进行自定义来创建自己的 docker-compose.override.yml
文件。同样,对 .env.dist 以及位于 app/config 和 res 中的所有 *.dist
文件进行相同的操作。
然后,转到项目目录并执行以下命令
docker-compose up -d
命令成功完成后,您将拥有一个正在运行的服务器,准备执行任务。如果您以跟踪模式打开日志文件(tail -f var/log/workers.log
),您将看到如下内容
[2017-11-19 00:00:23] default:worker.DEBUG: Idling... [] [] [2017-11-19 00:00:24] default:worker.DEBUG: Idling... [] [] [2017-11-19 00:00:25] default:worker.DEBUG: Idling... [] []
现在,让我们尝试将任务添加到队列中。此存储库包含一个 示例作业,该作业将问候语写入日志。通过运行以下命令
docker-compose exec worker ./jobserver queue:put default -H tarantool \ '{"payload": {"service": "greet", "args": {"name": "foobar"}}}'
我们将任务添加到 default
队列中,其中包含作业有效负载,其中 greet
是作业名称,foobar
是传递给作业可调用的参数。
现在在日志中您将看到作业正在执行
[2017-11-19 00:00:32] jobserver.INFO: HELLO FOOBAR [] []
[2017-11-19 00:00:33] default:worker.DEBUG: Idling... [] []
[2017-11-19 00:00:34] default:worker.INFO: Task #0 was successfully processed. {"payload":{"args":{"name":"foobar"},"service":"greet"}} []
此外,您还可以直接在控制台中运行作业,绕过队列
docker-compose exec worker ./jobserver -vvv handler:greet foobar
要从控制台运行作业,您需要编写一个 symfony 命令适配器并将其注册在 app/config/commands.php 中。这是 GreetHandler 的适配器外观:GreetCommand。
要查看所有已注册命令的列表,请运行
docker-compose exec worker ./jobserver
Tarantool
要使用 Tarantool 的 Web 界面,请打开浏览器并访问 http://localhost:8001 地址(确保 Docker 容器正在运行)。
要作为管理员进入正在运行的 Docker 容器中的 Tarantool 控制台,请执行
docker-compose exec tarantool tarantoolctl connect /var/run/tarantool/tarantool.sock
在服务器上
sudo tarantoolctl enter jobserver_instance
在服务器上作为作业队列用户
sudo tarantoolctl connect $TNT_JOBQUEUE_USER:$TNT_JOBQUEUE_PASSWORD@$TNT_JOBQUEUE_HOST:3301
监控
打开您的浏览器并访问
请确保使用 docker-compose.override.yml.full.dist 的副本,以便所有监控容器都在运行。
测试
docker-compose exec worker vendor/bin/phpunit
调试
要调试作业运行器,首先停止工作容器
docker-compose stop worker
然后,开始监听 PHP 调试连接,然后执行
LOCAL_IP=<your-local-ip> docker-compose run --rm worker bash -c ' \ TNT_JOBQUEUE_PASSWORD=jobserver \ vendor/bin/jobqueue run default \ --config app/config/jobqueue.php \ --executors-config app/config/executors.php \ --user jobserver \ --host tarantool \ '
查看此手册了解如何在PhpStorm中同时调试多个进程(例如,运行器和后台任务)的方法。
许可证
此库采用MIT许可证发布。有关详细信息,请参阅捆绑的LICENSE文件。