Replace MessageSubscriberInterface with AsMessageHandler attribute(s)
-use Symfony\Component\Messenger\Handler\MessageSubscriberInterface;
+use Symfony\Component\Messenger\Attribute\AsMessageHandler;
-class SmsNotificationHandler implements MessageSubscriberInterface
+class SmsNotificationHandler
{
- public function __invoke(SmsNotification $message)
+ #[AsMessageHandler]
+ public function handleSmsNotification(SmsNotification $message)
{
// ...
}
+ #[AsMessageHandler(priority: 0, bus: 'messenger.bus.default']
public function handleOtherSmsNotification(OtherSmsNotification $message)
{
// ...
- }
-
- public static function getHandledMessages(): iterable
- {
- // handle this message on __invoke
- yield SmsNotification::class;
-
- // also handle this message on handleOtherSmsNotification
- yield OtherSmsNotification::class => [
- 'method' => 'handleOtherSmsNotification',
- 'priority' => 0,
- 'bus' => 'messenger.bus.default',
- ];
}
}
Configure your rector.php
:
<?php
use Rector\Config\RectorConfig;
use Rector\Symfony\Symfony62\Rector\Class_\MessageSubscriberInterfaceToAttributeRector;
return RectorConfig::configure()
->withRules([
MessageSubscriberInterfaceToAttributeRector::class,
]);