Похоже, что это невозможно, так как прямые сообщения не являются транспортом. В качестве обходного пути вы можете переписать свою конфигурацию:
# config/packages/dev/messenger.yaml
framework:
messenger:
routing: []
# config/packages/prod/messenger.yaml
framework:
messenger:
'App\Message\SendNewsletterMessage': amqp
# config/packages/messenger.yaml
framework:
messenger:
transports:
amqp: '%env(MESSENGER_TRANSPORT_DSN)%'
Если вы хотите настроить транспорт для одной среды, вы можете украсить messenger.senders_locator
:
# config/services.yaml
services:
App\DirectSendersLocator:
decorates: messenger.senders_locator
arguments:
- '@App\DirectSendersLocator.inner'
- '%env(bool:DIRECT_TRANSPORT)%'
namespace App;
use Symfony\Component\Messenger\Envelope;
use Symfony\Component\Messenger\Transport\Sender\SendersLocatorInterface;
class DirectSendersLocator implements SendersLocatorInterface
{
/**
* @var SendersLocatorInterface
*/
private $decorated;
/**
* @var bool
*/
private $direct;
public function __construct(SendersLocatorInterface $decorated, bool $direct)
{
$this->decorated = $decorated;
$this->direct = $direct;
}
public function getSenders(Envelope $envelope, ?bool &$handle = false): iterable
{
if ($this->direct) {
$handle = true;
return [];
}
$this->decorated->getSenders($envelope, $handle);
}
}