pixelfederation / phystrix-bundle
Phystrix integration with Symfony2 framework.
Installs: 5 141
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 6
Forks: 12
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=7.4
- odesk/phystrix: ^2.0
- symfony/config: ^5.0
- symfony/dependency-injection: ^5.0
- symfony/http-kernel: ^5.0
- symfony/yaml: ^5.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.18
- nikic/php-parser: ^4.10
- php-parallel-lint/php-parallel-lint: ^1.2
- phpcompatibility/php-compatibility: ^9.3
- phpmd/phpmd: ^2.9
- phpro/grumphp: ^1.3
- phpunit/phpunit: ^9.5
- roave/security-advisories: dev-master
- sensiolabs/security-checker: ^6.0
- slevomat/coding-standard: ^6.0
- squizlabs/php_codesniffer: 3.5.6
- vimeo/psalm: ^4.6
README
Phystrix Bundle
This bundle provides phystrix command factory service: phystrix.command_factory
with default configuration
Installation
Install component by using Composer.
Update your project's composer.json
file to include dependency.
"require": { "pixelfederation/phystrix-bundle": "~1.1" }
Register bundle in your AppKernel
class AppKernel extends Kernel { public function registerBundles() { $bundles = array( // ... new Odesk\Bundle\PhystrixBundle\OdeskPhystrixBundle() // ... ); } }
Configuration
Default configuration:
app/config/config.yml
odesk_phystrix: default: fallback: ~ circuitBreaker: errorThresholdPercentage: 50 forceOpen: false forceClosed: false requestVolumeThreshold: 20 sleepWindowInMilliseconds: 5000 metrics: healthSnapshotIntervalInMilliseconds: 1000 rollingStatisticalWindowInMilliseconds: 10000 rollingStatisticalWindowBuckets: 10 requestCache: ~ requestLog: ~
Web Profiler
Phystrix bundles comes with a web profiler plugin, it is enabled automatically whenever Symfony profiler is enabled. You only need to make sure requestLog feature is turned on:
odesk_phystrix: default: requestLog: enabled: true
Only do this in mode/environment where profiler is active.
Usage
You may use phystrix.service_locator
to provide additional dependencies in runtime:
$container->get('phystrix.service_locator')->set('somekey', $somevalue);
How to create and run a command:
$command = $container->get('phystrix.command_factory')->getCommand('MyCommand', $parameter1, $parameter2); $command->execute();
Logger
How to add logger to Commands: define logger.phystrix
service
# config.yml monolog: channels: ['phystrix']
and
# services.yml services: logger.phystrix: alias: monolog.logger.phystrix
Redis state storage
Require redis state storage pixelfederation/phystrix-redis package:
composer require pixelfederation/phystrix-redis
Override state storage configuration:
# services.yml services: PixelFederation\Phystrix\Storage\RedisStateStorage: arguments: - '@snc_redis.cache' phystrix.state_storage: alias: PixelFederation\Phystrix\Storage\RedisStateStorage
License
This file is a part of the Phystrix Bundle
Copyright 2013-2017 Upwork Global Inc. All Rights Reserved.
This file is licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.