我正在使用 Symfony 4.4 和 Symfony Messenger
Messenger 配置包括傳輸和路由:
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
雖然處理程式看起來配置正確(當我運行控制臺除錯:信使它顯示正確分配給傳輸)
Messenger
messenger.bus.default
The following messages can be dispatched:
Name\Space\Message\SnowplowMessage
handled by Name\Space\MessageHandler\SnowplowEmailNotificationHandler
訊息類SnowplowMessage沒有排隊,而是立即發送到_invoke()處理程式的方法。
我正在使用 AMQP(RabbitMQ 作為傳輸)并且它配置正確,因為沒有顯示錯誤并且命令控制臺 messenger:setup-transport 正確創建佇列
uj5u.com熱心網友回復:
出于某種原因,這似乎是一個經常發生的錯誤,所以我寧愿發布答案而不是評論。
您應該將訊息類添加到路由配置,而不是處理程式類。
如果您希望異步管理該訊息,您的配置應該是:
routing:
Name\Space\Message\SnowplowMessage: async_medium
您要路由的是message。由于缺少上述配置,默認路由正在同步處理訊息。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/438383.html
