I'm working with Symfony 4.4 and Symfony Messenger
Messenger configuration includes a transport and routing:
messenger:
failure_transport: failed
transports:
async_medium:
dsn: '%env(MESSENGER_TRANSPORT_DSN)%'
retry_strategy:
max_retries: 3
delay: 1000
failed:
...
routing:
'Name\Space\MessageHandler\SnowplowNotificationHandler': async_medium
Though the handler looks like configured correctly (when I run console debug:messenger it shows up correctly assigned to transport)
Messenger
messenger.bus.default
The following messages can be dispatched:
Name\Space\Message\SnowplowMessage
handled by Name\Space\MessageHandler\SnowplowEmailNotificationHandler
The message class SnowplowMessage
is not queued, but sent instantly to the _invoke()
method of the handler.
I'm using AMQP (RabbitMQ as transport) and it's configured properly as no error is shown and the command console messenger:setup-transport creates the queue properly
For some reason this seems to be an error that happens with some frequency, so I rather post an answer instead of a comment.
You are supposed to add message classes to the routing configuration, not handler classes.
Your configuration should be, if you want that message to be manages asynchronously:
routing:
Name\Space\Message\SnowplowMessage: async_medium
What you are routing are message. Since the above configuration was missing, the default routing was processing the message syncrhonously.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With