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

Data Structures

class  ConfigTest
 
class  DeprecatedConfigTest
 

Public Member Functions

 __construct (ExchangeRepository $exchangeRepository, EnvelopeFactory $envelopeFactory, MessageQueueConfig $messageQueueConfig, MessageEncoder $messageEncoder, MessageValidator $messageValidator)
 
 publish ($topicName, $data)
 

Detailed Description

A MessageQueue Publisher to handle publishing a message.

Definition at line 15 of file Publisher.php.

Constructor & Destructor Documentation

◆ __construct()

__construct ( ExchangeRepository  $exchangeRepository,
EnvelopeFactory  $envelopeFactory,
MessageQueueConfig  $messageQueueConfig,
MessageEncoder  $messageEncoder,
MessageValidator  $messageValidator 
)

Initialize dependencies.

Parameters
ExchangeRepository$exchangeRepository
EnvelopeFactory$envelopeFactory
MessageQueueConfig$messageQueueConfig
MessageEncoder$messageEncoder
MessageValidator$messageValidator

Definition at line 61 of file Publisher.php.

67  {
68  $this->exchangeRepository = $exchangeRepository;
69  $this->envelopeFactory = $envelopeFactory;
70  $this->messageEncoder = $messageEncoder;
71  $this->messageValidator = $messageValidator;
72  }

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 77 of file Publisher.php.

78  {
79  $this->messageValidator->validate($topicName, $data);
80  $data = $this->messageEncoder->encode($topicName, $data);
81  $envelope = $this->envelopeFactory->create(
82  [
83  'body' => $data,
84  'properties' => [
85  'delivery_mode' => 2,
86  'message_id' => md5(uniqid($topicName))
87  ]
88  ]
89  );
90  $connectionName = $this->getPublisherConfig()->getPublisher($topicName)->getConnection()->getName();
91  $connectionName = ($connectionName === 'amqp' && !$this->isAmqpConfigured()) ? 'db' : $connectionName;
92  $exchange = $this->exchangeRepository->getByConnectionName($connectionName);
93  $exchange->enqueue($topicName, $envelope);
94  return null;
95  }

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