11 use PhpAmqpLib\Message\AMQPMessage;
25 private $exchangeRepository;
30 private $envelopeFactory;
35 private $messageEncoder;
40 private $messageValidator;
45 private $responseQueueNameBuilder;
50 private $publisherConfig;
55 private $messageIdGenerator;
72 PublisherConfig $publisherConfig,
75 $this->exchangeRepository = $exchangeRepository;
76 $this->envelopeFactory = $envelopeFactory;
77 $this->messageEncoder = $messageEncoder;
78 $this->messageValidator = $messageValidator;
79 $this->responseQueueNameBuilder = $responseQueueNameBuilder;
80 $this->publisherConfig = $publisherConfig;
81 $this->messageIdGenerator = $messageIdGenerator;
90 $replyTo = $this->responseQueueNameBuilder->getQueueName($topicName);
92 $this->messageValidator->validate($topicName,
$message);
94 $envelope = $this->envelopeFactory->create(
98 'reply_to' => $replyTo,
100 'correlation_id' => rand(),
101 'message_id' => $this->messageIdGenerator->generate($topicName),
105 $envelopes[] = $envelope;
107 $publisher = $this->publisherConfig->getPublisher($topicName);
108 $connectionName = $publisher->getConnection()->getName();
109 $exchange = $this->exchangeRepository->getByConnectionName($connectionName);
110 return $exchange->enqueue($topicName, $envelopes);
publish($topicName, $data)
__construct(ExchangeRepository $exchangeRepository, EnvelopeFactory $envelopeFactory, MessageEncoder $messageEncoder, MessageValidator $messageValidator, ResponseQueueNameBuilder $responseQueueNameBuilder, PublisherConfig $publisherConfig, \Magento\Framework\MessageQueue\MessageIdGeneratorInterface $messageIdGenerator)