0

I'm working with Symfony Messenger (Symfony 5.4), trying to use an async transport with multiple retries. As a fallback I would like to use a failure transport. My Messenger configuration is:

framework:
    messenger:
        reset_on_message: true
        failure_transport: failed

        transports:
            async:
                dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
                # sync: 'sync://'
                failure_transport: failed
                retry_strategy:
                    max_retries: 2
                    delay: 3000
                    multiplier: 1
            failed: 'doctrine://fire?queue_name=failed'

        routing:
            # Route your messages to the transports
            App\Message\RequestOdysseeSuspension: async

When I launch the worker (listening to both async and failed transports) terminal says the message has been received and raised an exception, so Messenger is going to retry to process it twice.

Then a new exception throws:

15:52:37 CRITICAL  [messenger] Error thrown while handling message App\Message\RequestOdysseeSuspension. Removing from transport after 2 retries. Error: "Handling "App\Message\RequestOdysseeSuspension" failed: I failed randomly!!!!" ["class" => "App\Message\RequestOdysseeSuspension","retryCount" => 2,"error" => "Handling "App\Message\RequestOdysseeSuspension" failed: I failed randomly!!!!","exception" => Symfony\Component\Messenger\Exception\HandlerFailedException^ { …}]
15:52:37 INFO      [messenger] Rejected message App\Message\RequestOdysseeSuspension will be sent to the failure transport Symfony\Component\Messenger\Bridge\Doctrine\Transport\DoctrineTransport. ["class" => "App\Message\RequestOdysseeSuspension","transport" => "Symfony\Component\Messenger\Bridge\Doctrine\Transport\DoctrineTransport"]

which let me think that Messenger calls a failure transport but not the one I defined.

11:50:00 INFO      [messenger] Received message App\Message\RequestOdysseeSuspension ["class" => "App\Message\RequestOdysseeSuspension"]
11:50:00 WARNING   [messenger] Error thrown while handling message App\Message\RequestOdysseeSuspension. Sending for retry #1 using 1000 ms delay. Error: "Handling "App\Message\RequestOdysseeSuspension" failed: I failed randomly!!!!" ["class" => "App\Message\RequestOdysseeSuspension","retryCount" => 1,"delay" => 1000,"error" => "Handling "App\Message\RequestOdysseeSuspension" failed: I failed randomly!!!!","exception" => Symfony\Component\Messenger\Exception\HandlerFailedException^ { …}]
11:50:02 INFO      [messenger] Received message App\Message\RequestOdysseeSuspension ["class" => "App\Message\RequestOdysseeSuspension"]
11:50:02 WARNING   [messenger] Error thrown while handling message App\Message\RequestOdysseeSuspension. Sending for retry #2 using 2000 ms delay. Error: "Handling "App\Message\RequestOdysseeSuspension" failed: I failed randomly!!!!" ["class" => "App\Message\RequestOdysseeSuspension","retryCount" => 2,"delay" => 2000,"error" => "Handling "App\Message\RequestOdysseeSuspension" failed: I failed randomly!!!!","exception" => Symfony\Component\Messenger\Exception\HandlerFailedException^ { …}]
11:50:05 INFO      [messenger] Received message App\Message\RequestOdysseeSuspension ["class" => "App\Message\RequestOdysseeSuspension"]
11:50:05 WARNING   [messenger] Error thrown while handling message App\Message\RequestOdysseeSuspension. Sending for retry #3 using 4000 ms delay. Error: "Handling "App\Message\RequestOdysseeSuspension" failed: I failed randomly!!!!" ["class" => "App\Message\RequestOdysseeSuspension","retryCount" => 3,"delay" => 4000,"error" => "Handling "App\Message\RequestOdysseeSuspension" failed: I failed randomly!!!!","exception" => Symfony\Component\Messenger\Exception\HandlerFailedException^ { …}]

Am I doing something wrong ? Did I misunderstand the configuration ? Any help would be appreciated.

Thank a lot.

arsrobota
  • 15
  • 6

0 Answers0