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
CodePudding user response:
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.