Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Public Member Functions
MassPublisher Class Reference
Inheritance diagram for MassPublisher:
PublisherInterface

Public Member Functions

 __construct (ExchangeRepository $exchangeRepository, EnvelopeFactory $envelopeFactory, MessageEncoder $messageEncoder, MessageValidator $messageValidator, PublisherConfig $publisherConfig, MessageIdGeneratorInterface $messageIdGenerator)
 
 publish ($topicName, $data)
 

Detailed Description

Class MassPublisher used for encoding topic entities to OperationInterface and publish them.

Definition at line 23 of file MassPublisher.php.

Constructor & Destructor Documentation

◆ __construct()

__construct ( ExchangeRepository  $exchangeRepository,
EnvelopeFactory  $envelopeFactory,
MessageEncoder  $messageEncoder,
MessageValidator  $messageValidator,
PublisherConfig  $publisherConfig,
MessageIdGeneratorInterface  $messageIdGenerator 
)

Initialize dependencies.

Parameters
\Magento\Framework\MessageQueue\Bulk\ExchangeRepository$exchangeRepository
\Magento\Framework\MessageQueue\EnvelopeFactory$envelopeFactory
\Magento\Framework\MessageQueue\MessageEncoder$messageEncoder
\Magento\Framework\MessageQueue\MessageValidator$messageValidator
\Magento\Framework\MessageQueue\Publisher\ConfigInterface$publisherConfig
\Magento\Framework\MessageQueue\MessageIdGeneratorInterface$messageIdGenerator

Definition at line 65 of file MassPublisher.php.

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  }

Member Function Documentation

◆ publish()

publish (   $topicName,
  $data 
)

{Publishes a message to a specific queue or exchange.

Parameters
string$topicName
array | object$data
Returns
null|mixed
Exceptions
}

Implements PublisherInterface.

Definition at line 84 of file MassPublisher.php.

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  }
$message

The documentation for this class was generated from the following file: