Skip to content

Adding new strategies should be possible without modifying RetryStrategyFactory #6

@rybakit

Description

@rybakit

Possible refactoring:

interface RetryStrategyFactory
{
    public function createFromArray(array $data) : RetryStrategy;
}

class RetryHandler implements Handler
{
    ...

    public function setStrategyFactory(string $name, RetryStrategyFactory $factory) : self
    { ... }

    public function handle(Task $task, Queue $queue): void
    {
        ...
        $strategy = $this->factories[$strategyName]->createFromArray($retryOptions);
        ...
    }
}

$retryHandler = (new RetryHandler())
    ->setStrategyFactory(RetryStrategies::CONSTANT, new ConstantRetryStrategyFactory())
    ->setStrategyFactory(RetryStrategies::LINEAR, new LinearRetryStrategyFactory())
;

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions