SlideShare une entreprise Scribd logo
1  sur  28
Télécharger pour lire hors ligne
Deep dive into Magento2
queuing functionality
9
Зміст
● Що таке Message Brokers
● Опис протоколу AMQP
● RabbitMQ
● Як в Magento 2 реалізована взаємодія с RabbitMQ
● Які core-модулі використовують функціонал черг
● Як додати підтримку черг в Ваш модуль
● Як додати підтримку додаткового message broker в Magento2
Що таке Message Broker
Це програма-посередник, яка використовується для комунікації і обміну
інформацією між різними компонентами системи.
Брокери можуть бути використані для:
● валідації
● зберігання
● маршрутизації
● доставки
Переваги використання
● комунікація між різними компонентами системи
● можливість виконувати розрахунки відкладено
● надійність доставки даних між елементами системи
Недоліки використання
● ускладнення системи в цілому
● потенційна поява помилок, які буде важко діагностувати
● витрата часу на вивчення і імплементацію нового програмного
компонента в систему
VS
Опис AMQP
AMQP - це набір стандартів, котрі регулюють внутрішній процес
відправки повідомлень в AMQP-сумісних брокерах.
Опис AMQP
AMQP-специфікацію можна розділити на:
● AMQ-model - application layer level specification
● AMQP - network level protocol
Компоненти AMQP
● message queue
● exchange
● binding
● message
● connection
● virtual host
Схема відправки повідомлення
Exchange types
● Direct Exchange
● Topic Exchange
● Fanout Exchange
● Headers Exchange
● Dead letter Exchange (RabbitMQ)
RabbitMQ
RabbitMQ - це open-source Message Broker, котрий повністю
підтримує протокол AMQP. Він реалізований за допомогою plug-in
архітектури і окрім AMQP підтримує Streaming Text Oriented
Messaging Protocol (STOMP), MQ Telemetry Transport (MQTT).
Як Magento 2 взаємодіє з RabbitMQ
Низькорівнева функціональність поділена між модулями:
● magento/framework-message-queue
● magento/framework-amqp
Як Magento 2 взаємодіє з RabbitMQ
Модуль magento/framework-message-queue містить реалізацію:
● Publisher
● PublisherPool
● Consumer
● ConnectionTypeResolver
● Envelop
● QueueRepository
Як Magento 2 взаємодіє з RabbitMQ
Модуль magento/framework-amqp містить функціональність:
● ConnectionFactory
● ConnectionTypeResolver (специфічний для AMQP)
● Exchange
● Queue
● TopologyInstaller
Як Magento 2 взаємодіє з RabbitMQ
Налаштування з’єднання з RabbitMQ:
● при встановленні системи - запуск команди bin/magento
setup:install з опціями:
○ amqp-host
○ amqp-user
○ amqp-password
○ amqp-port
○ amqp-virtualhost
○ amqp-ssl
● додати налаштування в файл env.php
● виконати команду bin/magento setup:config:set
Як Magento 2 взаємодіє з RabbitMQ
Налаштування в env.php
'queue' =>
array (
'amqp' =>
array (
'host' => 'rabbitmq.example.com',
'port' => '11213',
'user' => 'magento',
'password' => 'magento',
'virtualhost' => '/'
),
)
Як Magento 2 взаємодіє з RabbitMQ
Конфігураційні файли для налаштування роботи з чергами:
● communication.xml
● queue.xml
● topology.xml
● queue_publisher.xml
● queue_consumer.xml
Як Magento 2 взаємодіє з RabbitMQ
файл communication.xml
Як Magento 2 взаємодіє з RabbitMQ
файл queue_consumer.xml
Як Magento 2 взаємодіє з RabbitMQ
файл queue_topology.xml
Як Magento 2 взаємодіє з RabbitMQ
файл queue_publisher.xml
Як Magento 2 взаємодіє з RabbitMQ
MagentoFrameworkMessageQueuePublisherInterface
(MagentoFrameworkMessageQueuePublisherPool)
MagentoFrameworkMessageQueuePublisher
MagentoFrameworkMessageQueueExchangeRepository
MagentoFrameworkAmqpExchange
MagentoFrameworkAmqpExchange::enqueue -> AMQPMessage -> AMQPChannel ($message,
$exchange, $topic)
Використання черг в core-модулях
● magento/module-product-alert
● magento/module-webapi-async
Функціонал черг в кастомному модулі
Додамо в наш новий модуль наступні конфігураційні файли:
● communication.xml
● queue_topology.xml
● queue_consumer.xml
● queue_publisher.xml
Функціонал черг в кастомному модулі
Визначимо клас-publisher, який буде використовувати стандартний
MagentoFrameworkMessageQueuePublisherInterface для публікації
повідомлень
Функціонал черг в кастомному модулі
Додамо також клас-consumer, який буде опрацьовувати інформацію з черги
Redis як Message Broker
1. Створити новий модуль
2. Створити redis-client
3. Створити Publisher, ConnectionTypeResolver, Exchange
специфічні для Redis
4. Імплементувати підтримку redis в message-queue архітектуру
Magento2

Contenu connexe

Similaire à Pro Magento MeetUp #9 - Deep dive into Magento2 queuing functionality.pdf (8)

V24 com to_net
V24 com to_netV24 com to_net
V24 com to_net
 
Caliburn Micro Overview
Caliburn Micro OverviewCaliburn Micro Overview
Caliburn Micro Overview
 
лр6 використання modbus для scada
лр6 використання modbus для scada лр6 використання modbus для scada
лр6 використання modbus для scada
 
Wcf module 3.1
Wcf module 3.1Wcf module 3.1
Wcf module 3.1
 
лр7 ethernet
лр7 ethernet лр7 ethernet
лр7 ethernet
 
Lec16 промiжне програмне забезпечення
Lec16 промiжне програмне забезпеченняLec16 промiжне програмне забезпечення
Lec16 промiжне програмне забезпечення
 
Opc
OpcOpc
Opc
 
Інші підсистеми
Інші підсистемиІнші підсистеми
Інші підсистеми
 

Plus de Pro Magento Community

Plus de Pro Magento Community (12)

Ways to keep it fun with Hyva Themes, Alex Galdin - Pro Magento Meetup #10
Ways to keep it fun with Hyva Themes, Alex Galdin - Pro Magento Meetup #10Ways to keep it fun with Hyva Themes, Alex Galdin - Pro Magento Meetup #10
Ways to keep it fun with Hyva Themes, Alex Galdin - Pro Magento Meetup #10
 
Pro Magento MeetUp #6 — Blockchain & eCommerce (part 2 - practice and examples)
Pro Magento MeetUp #6 — Blockchain & eCommerce (part 2 - practice and examples)Pro Magento MeetUp #6 — Blockchain & eCommerce (part 2 - practice and examples)
Pro Magento MeetUp #6 — Blockchain & eCommerce (part 2 - practice and examples)
 
Blockchain & Ecommerce (part 1)
Blockchain & Ecommerce (part 1)Blockchain & Ecommerce (part 1)
Blockchain & Ecommerce (part 1)
 
MagentoTalks - Tools used in Magento development, Stanislav Matyavin
MagentoTalks - Tools used in Magento development, Stanislav MatyavinMagentoTalks - Tools used in Magento development, Stanislav Matyavin
MagentoTalks - Tools used in Magento development, Stanislav Matyavin
 
MagentoTalks - Magento 2 Theme, Bohdan Sidovolosyi
MagentoTalks - Magento 2 Theme, Bohdan SidovolosyiMagentoTalks - Magento 2 Theme, Bohdan Sidovolosyi
MagentoTalks - Magento 2 Theme, Bohdan Sidovolosyi
 
MagentoTalks - Magento 2 UI Components (part 2), Evgeny Trishin
MagentoTalks - Magento 2 UI Components (part 2), Evgeny TrishinMagentoTalks - Magento 2 UI Components (part 2), Evgeny Trishin
MagentoTalks - Magento 2 UI Components (part 2), Evgeny Trishin
 
MagentoTalks - Magento 2 UI Components (part 3), Evgeny Trishin
MagentoTalks - Magento 2 UI Components (part 3), Evgeny TrishinMagentoTalks - Magento 2 UI Components (part 3), Evgeny Trishin
MagentoTalks - Magento 2 UI Components (part 3), Evgeny Trishin
 
MagentoTalks - Magento 2 UI Components (part 1), Evgeny Trishin
MagentoTalks - Magento 2 UI Components (part 1), Evgeny TrishinMagentoTalks - Magento 2 UI Components (part 1), Evgeny Trishin
MagentoTalks - Magento 2 UI Components (part 1), Evgeny Trishin
 
Pro Magento MeetUp #2 - Varnish cache, Andrey Zabara
Pro Magento MeetUp #2 - Varnish cache, Andrey ZabaraPro Magento MeetUp #2 - Varnish cache, Andrey Zabara
Pro Magento MeetUp #2 - Varnish cache, Andrey Zabara
 
Pro Magento MeetUp #4 - Upgrade Compatibility Tool, Sergii Ivashchenko
Pro Magento MeetUp #4 - Upgrade Compatibility Tool, Sergii IvashchenkoPro Magento MeetUp #4 - Upgrade Compatibility Tool, Sergii Ivashchenko
Pro Magento MeetUp #4 - Upgrade Compatibility Tool, Sergii Ivashchenko
 
Pro Magento MeetUp #3 - How does Magento Page Builder work? - Paras Sood
Pro Magento MeetUp #3 - How does Magento Page Builder work? - Paras SoodPro Magento MeetUp #3 - How does Magento Page Builder work? - Paras Sood
Pro Magento MeetUp #3 - How does Magento Page Builder work? - Paras Sood
 
Pro Magento MeetUp #5 - Magento + PWA, Sproge Konstantin
Pro Magento MeetUp #5 - Magento + PWA, Sproge KonstantinPro Magento MeetUp #5 - Magento + PWA, Sproge Konstantin
Pro Magento MeetUp #5 - Magento + PWA, Sproge Konstantin
 

Pro Magento MeetUp #9 - Deep dive into Magento2 queuing functionality.pdf

  • 1. Deep dive into Magento2 queuing functionality 9
  • 2. Зміст ● Що таке Message Brokers ● Опис протоколу AMQP ● RabbitMQ ● Як в Magento 2 реалізована взаємодія с RabbitMQ ● Які core-модулі використовують функціонал черг ● Як додати підтримку черг в Ваш модуль ● Як додати підтримку додаткового message broker в Magento2
  • 3. Що таке Message Broker Це програма-посередник, яка використовується для комунікації і обміну інформацією між різними компонентами системи. Брокери можуть бути використані для: ● валідації ● зберігання ● маршрутизації ● доставки
  • 4. Переваги використання ● комунікація між різними компонентами системи ● можливість виконувати розрахунки відкладено ● надійність доставки даних між елементами системи
  • 5. Недоліки використання ● ускладнення системи в цілому ● потенційна поява помилок, які буде важко діагностувати ● витрата часу на вивчення і імплементацію нового програмного компонента в систему
  • 6. VS
  • 7. Опис AMQP AMQP - це набір стандартів, котрі регулюють внутрішній процес відправки повідомлень в AMQP-сумісних брокерах.
  • 8. Опис AMQP AMQP-специфікацію можна розділити на: ● AMQ-model - application layer level specification ● AMQP - network level protocol
  • 9. Компоненти AMQP ● message queue ● exchange ● binding ● message ● connection ● virtual host
  • 11. Exchange types ● Direct Exchange ● Topic Exchange ● Fanout Exchange ● Headers Exchange ● Dead letter Exchange (RabbitMQ)
  • 12. RabbitMQ RabbitMQ - це open-source Message Broker, котрий повністю підтримує протокол AMQP. Він реалізований за допомогою plug-in архітектури і окрім AMQP підтримує Streaming Text Oriented Messaging Protocol (STOMP), MQ Telemetry Transport (MQTT).
  • 13. Як Magento 2 взаємодіє з RabbitMQ Низькорівнева функціональність поділена між модулями: ● magento/framework-message-queue ● magento/framework-amqp
  • 14. Як Magento 2 взаємодіє з RabbitMQ Модуль magento/framework-message-queue містить реалізацію: ● Publisher ● PublisherPool ● Consumer ● ConnectionTypeResolver ● Envelop ● QueueRepository
  • 15. Як Magento 2 взаємодіє з RabbitMQ Модуль magento/framework-amqp містить функціональність: ● ConnectionFactory ● ConnectionTypeResolver (специфічний для AMQP) ● Exchange ● Queue ● TopologyInstaller
  • 16. Як Magento 2 взаємодіє з RabbitMQ Налаштування з’єднання з RabbitMQ: ● при встановленні системи - запуск команди bin/magento setup:install з опціями: ○ amqp-host ○ amqp-user ○ amqp-password ○ amqp-port ○ amqp-virtualhost ○ amqp-ssl ● додати налаштування в файл env.php ● виконати команду bin/magento setup:config:set
  • 17. Як Magento 2 взаємодіє з RabbitMQ Налаштування в env.php 'queue' => array ( 'amqp' => array ( 'host' => 'rabbitmq.example.com', 'port' => '11213', 'user' => 'magento', 'password' => 'magento', 'virtualhost' => '/' ), )
  • 18. Як Magento 2 взаємодіє з RabbitMQ Конфігураційні файли для налаштування роботи з чергами: ● communication.xml ● queue.xml ● topology.xml ● queue_publisher.xml ● queue_consumer.xml
  • 19. Як Magento 2 взаємодіє з RabbitMQ файл communication.xml
  • 20. Як Magento 2 взаємодіє з RabbitMQ файл queue_consumer.xml
  • 21. Як Magento 2 взаємодіє з RabbitMQ файл queue_topology.xml
  • 22. Як Magento 2 взаємодіє з RabbitMQ файл queue_publisher.xml
  • 23. Як Magento 2 взаємодіє з RabbitMQ MagentoFrameworkMessageQueuePublisherInterface (MagentoFrameworkMessageQueuePublisherPool) MagentoFrameworkMessageQueuePublisher MagentoFrameworkMessageQueueExchangeRepository MagentoFrameworkAmqpExchange MagentoFrameworkAmqpExchange::enqueue -> AMQPMessage -> AMQPChannel ($message, $exchange, $topic)
  • 24. Використання черг в core-модулях ● magento/module-product-alert ● magento/module-webapi-async
  • 25. Функціонал черг в кастомному модулі Додамо в наш новий модуль наступні конфігураційні файли: ● communication.xml ● queue_topology.xml ● queue_consumer.xml ● queue_publisher.xml
  • 26. Функціонал черг в кастомному модулі Визначимо клас-publisher, який буде використовувати стандартний MagentoFrameworkMessageQueuePublisherInterface для публікації повідомлень
  • 27. Функціонал черг в кастомному модулі Додамо також клас-consumer, який буде опрацьовувати інформацію з черги
  • 28. Redis як Message Broker 1. Створити новий модуль 2. Створити redis-client 3. Створити Publisher, ConnectionTypeResolver, Exchange специфічні для Redis 4. Імплементувати підтримку redis в message-queue архітектуру Magento2