我的Symfony 6.2包有一个类似于以下的处理程序
use Symfony\Component\Messenger\Attribute\AsMessageHandler;
#[AsMessageHandler]
class MyHandler {
public function __invoke(MyMessage $message): void {
}
}
当我运行bin/command debug:messenger
命令时,我得到了以下输出,其中处理部分显示了两次
MyMessage
handled by MyHandler
handled by MyHandler
相反,当我使用已弃用的方法来实现MessageHandlerInterface而不是如下所示的属性时,debug命令正确地只显示一个已处理的行
use Symfony\Component\Messenger\Handler\MessageHandlerInterface;
class MyHandler implements MessageHandlerInterface {
public function __invoke(MyMessage $message): void {
}
}
我期望属性版本像弃用版本一样显示一个处理程序。
1条答案
按热度按时间mrwjdhj31#
您观察到的行为不是bug或错误。
#[AsMessageHandler]
属性反映了Symfony 5.3及更高版本中信使处理程序的内部连接。有关详细文档,请参阅此Link