atantares / temporal-bundle
Temporal 的 Symfony 的工作流运行时
2.0.0
2024-09-26 11:57 UTC
Requires
- php: >=8.1
- ext-json: *
- symfony/config: ^6.0 || ^7.0
- symfony/console: ^6.0 || ^7.0
- symfony/dependency-injection: ^6.0 || ^7.0
- symfony/http-kernel: ^6.0 || ^7.0
- symfony/property-info: ^6.0 || ^7.0
- symfony/runtime: ^6.0 || ^7.0
- symfony/serializer: ^6.0 || ^7.0
- temporal/sdk: ^2.7
Requires (Dev)
- doctrine/doctrine-bundle: ^2.10
- doctrine/orm: ^2.15
- friendsofphp/php-cs-fixer: ^3.22
- nyholm/symfony-bundle-test: ^3.0
- phpstan/extension-installer: ^1.3
- phpstan/phpstan: ^1.10
- phpstan/phpstan-symfony: ^1.3
- phpunit/phpunit: ^10.3
- psr/log: ^3.0
- sentry/sentry-symfony: ^4.10
- symfony/monolog-bundle: ^3.8
- symfony/web-profiler-bundle: ^6.0|^7.0
Conflicts
This package is auto-updated.
Last update: 2024-09-26 12:22:20 UTC
README
这是一个用于官方 PHP SDK 的包,包含工作流和活动注册以及可配置的工人和工作流客户端。使用的存储库: roadrunner-bundle、temporal-bundle、temporal-bundle-vanta
要求
- php >= 8.1
- symfony >= 6.0
安装
使用以下命令进行安装 composer require atantares/temporal-bundle
用法
示例配置
# config/packages/temporal.yaml temporal: defaultClient: default pool: dataConverter: temporal.data_converter roadrunnerRPC: '%env(RR_RPC)%' workers: default: taskQueue: default exceptionInterceptor: temporal.exception_interceptor finalizers: - temporal.doctrine_ping_connection_default.finalizer - temporal.doctrine_clear_entity_manager.finalizer interceptors: - temporal.doctrine_ping_connection_default_activity_inbound.interceptor clients: default: namespace: default address: '%env(TEMPORAL_ADDRESS)%' dataConverter: temporal.data_converter cloud: namespace: default address: '%env(TEMPORAL_ADDRESS)%' dataConverter: temporal.data_converter clientKey: '%env(TEMPORAL_CLIENT_KEY_PATH)%' clientPem: '%env(TEMPORAL_CLIENT_CERT_PATH)%'
Doctrine 集成
如果使用 DoctrineBundle
,以下终结器可用于您
temporal.doctrine_ping_connection_<entity-mananger-name>.finalizer
temporal.doctrine_clear_entity_manager.finalizer
拦截器
temporal.doctrine_ping_connection_<entity-mananger-name>_activity_inbound.interceptor
创建 rr.yaml
version: "3" server: command: "php public/index.php" env: - APP_RUNTIME: Atantares\TemporalBundle\Runtime\TemporalRuntime temporal: address: "temporal:7233" namespace: 'default' # Configure a temporal namespace (you must create a namespace manually or use the default namespace named "default") activities: num_workers: 4 # Set up your worker count # Set up your values logs: mode: production output: stdout err_output: stderr encoding: json level: error rpc: listen: tcp://0.0.0.0:6001
工作流示例
<?php declare(strict_types=1); namespace App\Workflow; use Vanta\Integration\Symfony\Temporal\Attribute\AssignWorker; use Temporal\Workflow\WorkflowInterface; #[AssignWorker(name: 'worker1')] #[WorkflowInterface] final class MoneyTransferWorkflow { #[WorkflowMethod] public function transfer(...): \Generator; #[SignalMethod] function withdraw(): void; #[SignalMethod] function deposit(): void; }
活动示例
<?php declare(strict_types=1); namespace App\Workflow; use Vanta\Integration\Symfony\Temporal\Attribute\AssignWorker; use Temporal\Activity\ActivityInterface; use Temporal\Activity\ActivityMethod; #[AssignWorker(name: 'worker1')] #[ActivityInterface(...)] final class MoneyTransferActivity { #[ActivityMethod] public function transfer(...): int; #[ActivityMethod] public function cancel(...): bool; }
更多 PHP 示例,您可以在 这里 找到。
现在您可以启动工人
rr serve rr.yaml
鸣谢
许可证
MIT 许可证
版权 (c) 2024 Atantares
特此授予任何获得本软件及其相关文档副本(“软件”)的人免费使用软件的权利,不受任何限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许提供软件的人为此目的进行操作,前提是以下条件
上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途的适用性和非侵权性。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这些责任是基于合同、侵权或其他方式,源于、涉及或与软件或软件的使用或其他交易有关。