use Symfony\Component\Messenger\MessageBusInterface ; use Symfony\Component\Messenger\Middleware\MiddlewareInterface ; use Symfony\Component\Messenger\Middleware\StackInterface ; class ScheduleMiddleware implements MiddlewareInterface { public function __construct( private MessageBusInterface $messageBus, private TenantRepositoryInterface $tenantRepository , ) { } public function handle(Envelope $envelope, StackInterface $stack): Envelope { if (!$envelope->getMessage() instanceof ScheduleMessageInterface ) { return $stack->next()->handle($envelope, $stack); } // Check if the message has already been duplicated if (null !== $envelope->last(SchedulerStamp ::class)) { return $stack->next()->handle($envelope, $stack); } // ...