idci / task-bundle
Symfony 任务包
v2.5.4
2019-09-27 12:03 UTC
Requires
- php: >=5.3.9
- doctrine/doctrine-bundle: ~1.2
- doctrine/mongodb: ~1.1
- doctrine/mongodb-odm: ~1.0
- doctrine/mongodb-odm-bundle: ~3.0
- doctrine/orm: ~2.2,>=2.2.3
- friendsofsymfony/rest-bundle: ~1.5
- idci/asset-loader-bundle: ~1.0
- mtdowling/cron-expression: ~1.2
- php-amqplib/rabbitmq-bundle: ~1.6
- ramsey/uuid: ~3.0
- symfony/framework-bundle: ~2.3
- symfony/monolog-bundle: ~2.11.3
- symfony/twig-bundle: ~2.8
- twig/twig: ~1.0
Requires (Dev)
- phpunit/phpunit: ~5.7
- symfony/symfony: ^2.3
- dev-master
- 2.5.x-dev
- v2.5.4
- v2.5.3
- v2.5.2
- 2.5.1
- v2.5.0
- 2.4.x-dev
- v2.4.8
- v2.4.7
- v2.4.6
- v2.4.5
- v2.4.4
- v2.4.3
- v2.4.2
- v2.4.1
- v2.4.0
- 2.3.x-dev
- v2.3.16
- v2.3.15
- v2.3.14
- v2.3.13
- v2.3.12
- v2.3.11
- v2.3.10
- v2.3.9
- v2.3.8
- v2.3.7
- v2.3.6
- v2.3.5
- v2.3.4
- v2.3.3
- 2.3.2
- v2.3.1
- v2.3.0
- v2.2.2
- v2.2.1
- v2.2
- v2.1.7
- v2.1.6
- v2.1.5
- v2.1.4
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1
- v2.0
- v1.3.0
- v1.2.5
- v1.2.4
- v1.2.3
- v1.2.2
- v1.2.1
- v1.2
- v1.1
- 1.0.x-dev
- v1.0.1
- v1.0.0
- dev-dependabot/npm_and_yarn/decode-uri-component-0.2.2
- dev-dependabot/npm_and_yarn/loader-utils-1.4.2
- dev-dependabot/npm_and_yarn/karma-6.3.16
- dev-dependabot/npm_and_yarn/follow-redirects-1.14.8
- dev-dependabot/npm_and_yarn/chownr-1.1.4
- dev-dependabot/npm_and_yarn/tar-4.4.19
- dev-dependabot/npm_and_yarn/path-parse-1.0.7
- dev-dependabot/npm_and_yarn/codemirror-5.58.2
- dev-dependabot/npm_and_yarn/hosted-git-info-2.8.9
- dev-dependabot/npm_and_yarn/handlebars-3.0.8
- dev-dependabot/npm_and_yarn/y18n-3.2.2
- dev-dependabot/npm_and_yarn/elliptic-6.5.4
- dev-dependabot/npm_and_yarn/ini-1.3.7
- dev-dependabot/npm_and_yarn/http-proxy-1.18.1
- dev-dependabot/npm_and_yarn/decompress-4.2.1
- dev-dependabot/npm_and_yarn/bootstrap-vue-2.0.0-rc.12
- dev-dependabot/npm_and_yarn/yarn-1.22.0
- dev-dependabot/npm_and_yarn/bower-1.8.8
- dev-dependabot/npm_and_yarn/bootstrap-4.3.1
- dev-dependabot/npm_and_yarn/extend-3.0.2
- dev-dependabot/npm_and_yarn/mixin-deep-1.3.2
This package is auto-updated.
Last update: 2024-08-30 01:11:39 UTC
README
此包的目的是提供一个简单的方式来异步处理CPU密集型脚本。您可能习惯于使用cron作业来解决这类问题。此包使用RabbitMQ,更有效地解决了这些问题。CPU密集型脚本称为一个操作。为了跟踪操作,此包使用monolog将操作日志存储在MongoDB中。如果您想了解此包的工作原理,您需要了解RabbitMQ的基本知识。
- 简介
- 安装
- 运行测试
- 如何创建提取规则服务
- 如何创建操作服务
- 如何创建任务配置对象
- 持久化任务配置
- 使用任务配置表单类型
- 如何运行任务
- 如何将应用程序扩展为并发运行任务
- 如何在不同应用程序中分离操作
- 示例
- UML
简介
术语表
- 一个 extract_rule 指的是一个symfony服务,用于检索数据数组。将为数组的每个项目创建一个任务。
- 一个 action 是一个执行任何您想要的工作的服务。它可以由之前定义的顺序(我们称之为工作流)中的其他操作触发。
- 一个 workflows 指的是操作如何链接在一起。您可以使用依赖于先前操作结果的条件来触发一个操作或另一个操作。
- 一个 task 指的是一个提取数据并链接在一起的操作集合。它是一个Mongo文档,可以在操作失败时恢复操作。
- 通过这些,我们可以组合一个 task configuration 来定义任务的创建和处理方式。
简单架构
以下是一个简单的架构,有助于了解任务的创建和处理过程。每个箭头可以表示一个发送并消费的RabbitMQ消息。
RabbitMQ中的任务生命周期
任务可以通过两种不同的方式创建。处理器服务是这个包的入口点。有关详细信息,请参阅文档中的"如何运行任务" 部分。
一个包含一些(或没有)要处理的数据的单个操作
- 1 - task producer 发送一个包含操作名称和一些数据(或没有数据)的消息。
- 2 - task consumer 从这些数据创建一个单一的任务,并使用 action producer 发送创建的任务。
- 3 - action consumer 检索任务以运行单个操作。
具有工作流和多个操作的复杂配置
- 1 - extract_rule producer 将提取规则服务的名称发送到RabbitMQ。
- 2 - extract rule consumer 提取数据,并使用 task producer 发送包含数据数组的消息。
- 3 - task consumer 为提取数据数组中的每个项目创建任务,并使用 action producer 发送创建的任务。
- 4 - 操作消费者读取配置以根据工作流运行操作。一个操作可以导致另一个操作,或者只是结束进程。
安装
在您的composer.json
文件中添加依赖项
"require": { ..., "idci/task-bundle": "dev-master", }
在您的应用程序内核中启用组件
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new Symfony\Bundle\TwigBundle\TwigBundle(), new Doctrine\Bundle\MongoDBBundle\DoctrineMongoDBBundle(), new OldSound\RabbitMqBundle\OldSoundRabbitMqBundle(), new IDCI\Bundle\TaskBundle\IDCITaskBundle(), ); }
导入组件配置
# app/config/config.yml imports: - { resource: @IDCITaskBundle/Resources/config/config.yml }
更新您的参数.yml文件
application_name: 'Task Runner' task_database_host: localhost task_database_port: ~ task_database_name: task_manager task_database_user: dbuser task_database_password: dbpwd task_rabbitmq_host: localhost task_rabbitmq_port: 5672 task_rabbitmq_user: user task_rabbitmq_password: password task_rabbitmq_lazy: false task_rabbitmq_vhost: / task_mongo_database_name: task task_mongo_database_host: 'mongodb://127.0.0.1:27017'
运行测试
安装组件依赖项
$ make composer-update
以执行单元测试
$ make phpunit