Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
MessageController.php
Go to the documentation of this file.
1 <?php
8 
11 
13 {
17  private $lockFactory;
18 
22  private $reader;
23 
27  private $writer;
28 
36  public function __construct(
37  \Magento\Framework\MessageQueue\LockInterfaceFactory $lockFactory,
38  \Magento\Framework\MessageQueue\Lock\ReaderInterface $reader,
39  \Magento\Framework\MessageQueue\Lock\WriterInterface $writer
40  ) {
41  $this->lockFactory = $lockFactory;
42  $this->reader = $reader;
43  $this->writer = $writer;
44  }
45 
55  public function lock(EnvelopeInterface $envelope, $consumerName)
56  {
57  $lock = $this->lockFactory->create();
58  $properties = $envelope->getProperties();
59  if (empty($properties['message_id'])) {
60  throw new NotFoundException(new Phrase("Property 'message_id' not found in properties."));
61  }
62  $code = $consumerName . '-' . $properties['message_id'];
63  $code = md5($code);
64  $this->reader->read($lock, $code);
65  if ($lock->getId()) {
66  throw new MessageLockException(new Phrase('The "%1" message code was already processed.', [$code]));
67  }
68  $this->writer->saveLock($lock);
69  return $lock;
70  }
71 }
__construct(\Magento\Framework\MessageQueue\LockInterfaceFactory $lockFactory, \Magento\Framework\MessageQueue\Lock\ReaderInterface $reader, \Magento\Framework\MessageQueue\Lock\WriterInterface $writer)
lock(EnvelopeInterface $envelope, $consumerName)
$properties
Definition: categories.php:26
$code
Definition: info.phtml:12