ConfigReaderPlugin.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\MessageQueue\Config\Consumer;
  7. use Magento\Framework\MessageQueue\ConfigInterface;
  8. use Magento\Framework\MessageQueue\Consumer\Config\CompositeReader as ConsumerConfigCompositeReader;
  9. /**
  10. * Plugin which provides access to consumers declared in queue config using consumer config interface.
  11. *
  12. * @deprecated 102.0.1
  13. */
  14. class ConfigReaderPlugin
  15. {
  16. /**
  17. * @var ConfigInterface
  18. */
  19. private $config;
  20. /**
  21. * @param ConfigInterface $config
  22. */
  23. public function __construct(ConfigInterface $config)
  24. {
  25. $this->config = $config;
  26. }
  27. /**
  28. * Read values from queue config and make them available via consumer config.
  29. *
  30. * @param ConsumerConfigCompositeReader $subject
  31. * @param array $result
  32. * @param string|null $scope
  33. * @return array
  34. *
  35. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  36. */
  37. public function afterRead(ConsumerConfigCompositeReader $subject, $result, $scope = null)
  38. {
  39. return array_merge($this->getConsumerConfigDataFromQueueConfig(), $result);
  40. }
  41. /**
  42. * Get data from queue config in format compatible with consumer config data internal structure.
  43. *
  44. * @return array
  45. */
  46. private function getConsumerConfigDataFromQueueConfig()
  47. {
  48. $result = [];
  49. foreach ($this->config->getConsumers() as $consumerData) {
  50. $consumerName = $consumerData['name'];
  51. $handlers = [];
  52. foreach ($consumerData['handlers'] as $topicHandlers) {
  53. foreach ($topicHandlers as $handlerConfig) {
  54. $handlers[] = $handlerConfig;
  55. }
  56. }
  57. $result[$consumerName] = [
  58. 'name' => $consumerName,
  59. 'queue' => $consumerData['queue'],
  60. 'consumerInstance' => $consumerData['instance_type'],
  61. 'handlers' => $handlers,
  62. 'connection' => $consumerData['connection'],
  63. 'maxMessages' => $consumerData['max_messages']
  64. ];
  65. }
  66. return $result;
  67. }
  68. }