Thanks to visit codestin.com
Credit goes to github.com

Skip to content

[Messenger] retry_strategy as service #32300

Closed
@versh23

Description

@versh23

Symfony version(s) affected: 4.3

Description
Hello!
I cant define a custom retry_strategy by service

How to reproduce

my config

framework:
    messenger:
        transports:
            cft:
                dsn: '%env(CFT_DSN)%'
                retry_strategy:
                    service: '@App\Cft\Messenger\CftRetryStrategy'

and error

[InvalidArgumentException]
  "service" cannot be used along with the other retry_strategy options.

Possible Solution
may be fix DI configuration?
vendor/symfony/framework-bundle/DependencyInjection/Configuration.php

->arrayNode('retry_strategy')
	->addDefaultsIfNotSet()
	->validate()
		->ifTrue(function ($v) { return null !== $v['service'] && (isset($v['max_retries']) || isset($v['delay']) || isset($v['multiplier']) || isset($v['max_delay'])); })
		->thenInvalid('"service" cannot be used along with the other retry_strategy options.')
	->end()
	->children()
		->scalarNode('service')->defaultNull()->info('Service id to override the retry strategy entirely')->end()
		->integerNode('max_retries')->defaultValue(3)->min(0)->end()
		->integerNode('delay')->defaultValue(1000)->min(0)->info('Time in ms to delay (or the initial value when multiplier is used)')->end()
		->floatNode('multiplier')->defaultValue(2)->min(1)->info('If greater than 1, delay will grow exponentially for each retry: this delay = (delay * (multiple ^ retries))')->end()
		->integerNode('max_delay')->defaultValue(0)->min(0)->info('Max time in ms that a retry should ever be delayed (0 = infinite)')->end()
	->end()
->end()

@weaverryan
from slack

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions