7 declare(strict_types=1);
28 private $exchangeRepository;
33 private $envelopeFactory;
38 private $messageEncoder;
43 private $messageValidator;
48 private $publisherConfig;
53 private $messageIdGenerator;
70 PublisherConfig $publisherConfig,
73 $this->exchangeRepository = $exchangeRepository;
74 $this->envelopeFactory = $envelopeFactory;
75 $this->messageEncoder = $messageEncoder;
76 $this->messageValidator = $messageValidator;
77 $this->publisherConfig = $publisherConfig;
78 $this->messageIdGenerator = $messageIdGenerator;
88 $this->messageValidator->validate(AsyncConfig::SYSTEM_TOPIC_NAME,
$message);
89 $message = $this->messageEncoder->encode(AsyncConfig::SYSTEM_TOPIC_NAME,
$message);
90 $envelopes[] = $this->envelopeFactory->create(
95 'message_id' => $this->messageIdGenerator->generate($topicName),
100 $publisher = $this->publisherConfig->getPublisher($topicName);
101 $connectionName = $publisher->getConnection()->getName();
102 $exchange = $this->exchangeRepository->getByConnectionName($connectionName);
103 $exchange->enqueue($topicName, $envelopes);
__construct(ExchangeRepository $exchangeRepository, EnvelopeFactory $envelopeFactory, MessageEncoder $messageEncoder, MessageValidator $messageValidator, PublisherConfig $publisherConfig, MessageIdGeneratorInterface $messageIdGenerator)
publish($topicName, $data)