Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
MassPublisher.php
Go to the documentation of this file.
1 <?php
7 declare(strict_types=1);
8 
10 
19 
24 {
28  private $exchangeRepository;
29 
33  private $envelopeFactory;
34 
38  private $messageEncoder;
39 
43  private $messageValidator;
44 
48  private $publisherConfig;
49 
53  private $messageIdGenerator;
54 
65  public function __construct(
66  ExchangeRepository $exchangeRepository,
67  EnvelopeFactory $envelopeFactory,
68  MessageEncoder $messageEncoder,
69  MessageValidator $messageValidator,
70  PublisherConfig $publisherConfig,
71  MessageIdGeneratorInterface $messageIdGenerator
72  ) {
73  $this->exchangeRepository = $exchangeRepository;
74  $this->envelopeFactory = $envelopeFactory;
75  $this->messageEncoder = $messageEncoder;
76  $this->messageValidator = $messageValidator;
77  $this->publisherConfig = $publisherConfig;
78  $this->messageIdGenerator = $messageIdGenerator;
79  }
80 
84  public function publish($topicName, $data)
85  {
86  $envelopes = [];
87  foreach ($data as $message) {
88  $this->messageValidator->validate(AsyncConfig::SYSTEM_TOPIC_NAME, $message);
89  $message = $this->messageEncoder->encode(AsyncConfig::SYSTEM_TOPIC_NAME, $message);
90  $envelopes[] = $this->envelopeFactory->create(
91  [
92  'body' => $message,
93  'properties' => [
94  'delivery_mode' => 2,
95  'message_id' => $this->messageIdGenerator->generate($topicName),
96  ]
97  ]
98  );
99  }
100  $publisher = $this->publisherConfig->getPublisher($topicName);
101  $connectionName = $publisher->getConnection()->getName();
102  $exchange = $this->exchangeRepository->getByConnectionName($connectionName);
103  $exchange->enqueue($topicName, $envelopes);
104  return null;
105  }
106 }
$message
__construct(ExchangeRepository $exchangeRepository, EnvelopeFactory $envelopeFactory, MessageEncoder $messageEncoder, MessageValidator $messageValidator, PublisherConfig $publisherConfig, MessageIdGeneratorInterface $messageIdGenerator)