为什么Symfony debug:messenger命令在我使用AsMessageMessage属性时显示我的messenger处理程序两次?

zte4gxcn  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(160)

我的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 {
    }
}

我期望属性版本像弃用版本一样显示一个处理程序。

mrwjdhj3

mrwjdhj31#

您观察到的行为不是bug或错误。#[AsMessageHandler]属性反映了Symfony 5.3及更高版本中信使处理程序的内部连接。
有关详细文档,请参阅此Link

相关问题