Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Publisher.php
Go to the documentation of this file.
1 <?php
7 
13 
17 class Publisher implements PublisherInterface
18 {
22  private $exchangeRepository;
23 
27  private $envelopeFactory;
28 
32  private $messageEncoder;
33 
37  private $messageValidator;
38 
42  private $publisherConfig;
43 
47  private $messageIdGenerator;
48 
57  public function __construct(
58  ExchangeRepository $exchangeRepository,
59  EnvelopeFactory $envelopeFactory,
60  MessageEncoder $messageEncoder,
61  MessageValidator $messageValidator,
62  PublisherConfig $publisherConfig,
63  \Magento\Framework\MessageQueue\MessageIdGeneratorInterface $messageIdGenerator
64  ) {
65  $this->exchangeRepository = $exchangeRepository;
66  $this->envelopeFactory = $envelopeFactory;
67  $this->messageEncoder = $messageEncoder;
68  $this->messageValidator = $messageValidator;
69  $this->publisherConfig = $publisherConfig;
70  $this->messageIdGenerator = $messageIdGenerator;
71  }
72 
76  public function publish($topicName, $data)
77  {
78  $envelopes = [];
79  foreach ($data as $message) {
80  $this->messageValidator->validate($topicName, $message);
81  $message = $this->messageEncoder->encode($topicName, $message);
82  $envelopes[] = $this->envelopeFactory->create(
83  [
84  'body' => $message,
85  'properties' => [
86  'delivery_mode' => 2,
87  'message_id' => $this->messageIdGenerator->generate($topicName),
88  ]
89  ]
90  );
91  }
92  $publisher = $this->publisherConfig->getPublisher($topicName);
93  $connectionName = $publisher->getConnection()->getName();
94  $exchange = $this->exchangeRepository->getByConnectionName($connectionName);
95  $exchange->enqueue($topicName, $envelopes);
96  return null;
97  }
98 }
__construct(ExchangeRepository $exchangeRepository, EnvelopeFactory $envelopeFactory, MessageEncoder $messageEncoder, MessageValidator $messageValidator, PublisherConfig $publisherConfig, \Magento\Framework\MessageQueue\MessageIdGeneratorInterface $messageIdGenerator)
Definition: Publisher.php:57
$message