Php Symfony Messenger如何确定哪种处理程序应处理每种类型的消息?

Php Symfony Messenger如何确定哪种处理程序应处理每种类型的消息?,php,symfony,symfony4,symfony-messenger,Php,Symfony,Symfony4,Symfony Messenger,我正在尝试使用Messenger组件在rabbit和Symfony中实现交换 假设我们有一辆交通工具: 信使: 运输: amqp_图像_调整大小: dsn:“%env(MESSENGER\u TRANSPORT\u dsn)%” 选项: 交换: 名称:图像大小 类型:扇形输出 队列: 名称:image_resize_qu 路由: 'App\MessageBus\Message\Image\Resize':amqp\u Image\u Resize 消费者如何知道应该使用哪个处理程序来处理消息?

我正在尝试使用Messenger组件在rabbit和Symfony中实现交换

假设我们有一辆交通工具:

信使:
运输:
amqp_图像_调整大小:
dsn:“%env(MESSENGER\u TRANSPORT\u dsn)%”
选项:
交换:
名称:图像大小
类型:扇形输出
队列:
名称:image_resize_qu
路由:
'App\MessageBus\Message\Image\Resize':amqp\u Image\u Resize

消费者如何知道应该使用哪个处理程序来处理消息?

首先,处理程序类应该实现
Symfony\Component\Messenger\handler\messagehandler接口

这允许Symfony使用适当的标记自动配置服务

然后,您的处理程序应该使用它能够处理的消息类型进行类型提示。在您的情况下,类似这样的情况:

namespace-App\MessageBus\Handler;
使用Symfony\Component\Messenger\Handler\MessageHandlerInterface;
使用App\MessageBus\Message\Image\Resize;
类ResizeHandler实现MessageHandlerInterface{
公共函数调用(调整$message大小){
//做你的事
}
}
接口加上参数类型提示允许Symfony确定哪个处理程序应该处理此消息

这在文档中显示