Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ConfigReaderPlugin.php
Go to the documentation of this file.
1 <?php
7 
9 
16 {
20  private $queueConfig;
21 
27  public function __construct(QueueConfig $queueConfig)
28  {
29  $this->queueConfig = $queueConfig;
30  }
31 
42  public function afterRead(
43  \Magento\Framework\MessageQueue\Topology\Config\CompositeReader $subject,
44  array $result,
45  $scope = null
46  ) {
47  $topologyConfigDataFromQueueConfig = $this->getTopologyConfigDataFromQueueConfig();
48  foreach ($topologyConfigDataFromQueueConfig as $exchangeKey => $exchangeConfig) {
49  if (isset($result[$exchangeKey])) {
50  $result[$exchangeKey]['bindings'] = array_merge(
51  $exchangeConfig['bindings'],
52  $result[$exchangeKey]['bindings']
53  );
54  } else {
55  $result[$exchangeKey] = $exchangeConfig;
56  }
57  }
58  return $result;
59  }
60 
66  private function getTopologyConfigDataFromQueueConfig()
67  {
68  $result = [];
69  foreach ($this->queueConfig->getBinds() as $queueConfigBinding) {
70  $topic = $queueConfigBinding['topic'];
71  $destinationType = 'queue';
72  $destination = $queueConfigBinding['queue'];
73  $bindingId = $destinationType . '--' . $destination . '--' . $topic;
74  $bindingData = [
75  'id' => $bindingId,
76  'destinationType' => $destinationType,
77  'destination' => $destination,
78  'disabled' => false,
79  'topic' => $topic,
80  'arguments' => []
81  ];
82 
83  $exchangeName = $queueConfigBinding['exchange'];
84  $connection = $this->queueConfig->getConnectionByTopic($topic);
85  if (isset($result[$exchangeName . '--' . $connection])) {
86  $result[$exchangeName . '--' . $connection]['bindings'][$bindingId] = $bindingData;
87  } else {
88  $result[$exchangeName . '--' . $connection] = [
89  'name' => $exchangeName,
90  'type' => 'topic',
91  'connection' => $connection,
92  'durable' => true,
93  'autoDelete' => false,
94  'internal' => false,
95  'bindings' => [$bindingId => $bindingData],
96  'arguments' => [],
97  ];
98  }
99  }
100  return $result;
101  }
102 }
afterRead(\Magento\Framework\MessageQueue\Topology\Config\CompositeReader $subject, array $result, $scope=null)
$connection
Definition: bulk.php:13