Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Using Magento 2.3 MySQL Queues

388 vues

Publié le

Basic Queue Implementation in Magento 2

Publié dans : Technologie

Using Magento 2.3 MySQL Queues

  1. 1. © 2019 Magento, Inc. Page | 1 Magento 2.3 Using MySQL For Queues
  2. 2. © 2019 Magento, Inc. . Page | 2 Senior Software Developer at BORN Group Renu Mishra
  3. 3. © 2019 Magento, Inc. Page | 3 Agenda
  4. 4. © 2019 Magento, Inc. Page | 4 Agenda  Need Of Queue  Introduction to Queues  Creating Queues with MySQL  Publishing messages to Queue  Consuming the published message
  5. 5. © 2019 Magento, Inc. Page | 5 Not In Scope
  6. 6. © 2019 Magento, Inc. Page | 6 Not In Scope  Parallel Consumer processing.  Batch Processing.  AMQP Implementation (RabbitMQ).  Advanced Error handling (Rejecting and Re-queuing).  Supervisiord for consumer monitoring.
  7. 7. © 2019 Magento, Inc. Page | 7 What is Queue and it’s uses ?
  8. 8. © 2019 Magento, Inc. Page | 8 What is Queue and it’s uses ?  It distribute load across the application allowing work to placed in a queue and process independently.  Received and processes the message asynchronously.  It also includes a mechanism for storing undelivered messages.  Queue works in background. It has no frontend user interaction.
  9. 9. © 2019 Magento, Inc. Page | 9 Introduction Of Queue
  10. 10. © 2019 Magento, Inc. Page | 10 Queue Processing Diagram Routes
  11. 11. © 2019 Magento, Inc. Page | 11 Queue Processing Description  A publisher is configured to send messages to a topic. • A topic is a way to categorize messages to consumers. • A consumer is configured to listen for messages with specific topics. • Queues route topics to consumers. • Consumers accept messages and perform actions on them.
  12. 12. © 2019 Magento, Inc. Page | 12 Enough Talk Let’s Get Started!
  13. 13. © 2019 Magento, Inc. Page | 13 Registering The Module
  14. 14. © 2019 Magento, Inc. Page | 14 <module_root>/registration.php
  15. 15. © 2019 Magento, Inc. Page | 15 <module_root>/etc/module.xml
  16. 16. © 2019 Magento, Inc. Page | 16 Let’s Creates the Queue Files Now
  17. 17. © 2019 Magento, Inc. Page | 17 Declaring The Publisher
  18. 18. © 2019 Magento, Inc. Page | 18 Send the message to broker
  19. 19. © 2019 Magento, Inc. Page | 19 <module_root>/etc/publisher.xml
  20. 20. © 2019 Magento, Inc. Page | 20 <module_root>/etc/publisher.xml - publisher element - topic : The name of the topic.Wildcards character are not supported. - connection element - name : For AMQP connections, the connection name must match the connection attribute in the queue_topology.xml file. Otherwise, the connection name must be db. - exchange : The name of the exchange to publish to. The default system exchange name is magento.
  21. 21. © 2019 Magento, Inc. Page | 21 <module_root>/etc/communication.xml
  22. 22. © 2019 Magento, Inc. Page | 22 <module_root>/etc/communication.xml - topic element - name : A string that uniquely identifies the topic.Wildcards character are not supported in the communication.xml file(*,%,[] and so on). - request : Specifies the data type of the topic. - handler element - name : A string that uniquely defines the handler. - type : The class that defines the handler. - method : The method this handler executes.
  23. 23. © 2019 Magento, Inc. Page | 23 Declare The Broker
  24. 24. © 2019 Magento, Inc. Page | 24 Receive the Data From Producer/Publisher
  25. 25. © 2019 Magento, Inc. Page | 25 <module_root>/etc/queue.xml
  26. 26. © 2019 Magento, Inc. Page | 26 <module_root>/etc/queue.xml - broker element - topic : A topic defined in the communication.xml file. - exchange : The name of the exchange to publish to. The default system exchange name is magento - type : The type of message broker. For this release, the value must be amqp or db.
  27. 27. © 2019 Magento, Inc. Page | 27 <module_root>/etc/queue.xml - queue element - name : Defines the queue name to send the message to. - consumer : The name of the consumer. - consumerInstance : The path to a Magento class that consumes the message. - handler : Specifies the class and method that processes the message. The value must be specified in the format <Vendor>Module<ServiceName>::<methodName>.
  28. 28. © 2019 Magento, Inc. Page | 28 Declaring The Topology
  29. 29. © 2019 Magento, Inc. Page | 29 Queue route topics to consumers
  30. 30. © 2019 Magento, Inc. Page | 30 <module_root>/etc/queue_topology.xml
  31. 31. © 2019 Magento, Inc. Page | 31 <module_root>/etc/queue_topology.xml - exchange element - name : A unique ID for the exchange. - type : Specifies the type of exchange. Must be topic. - connection : For AMQP connections, a string that identifies the connection. For MySQL connections, the connection name must be db.
  32. 32. © 2019 Magento, Inc. Page | 32 <module_root>/etc/queue_topology.xml - binding element - id : A unique ID for this binding. - topic : The name of a topic. - destinationType : Must be queue. - destination : Identifies the name of a queue.
  33. 33. © 2019 Magento, Inc. Page | 33 Declaring The Consumer
  34. 34. © 2019 Magento, Inc. Page | 34 Consume the publish message Routes
  35. 35. © 2019 Magento, Inc. Page | 35 <module_root>/etc/queue_consumer.xml
  36. 36. © 2019 Magento, Inc. Page | 36 <module_root>/etc/queue_consumer.xml - consumer element - name : The name of the consumer. - queue : Defines the queue name to send the message to. - handler : Specifies the class and method that processes the message. The value must be specified in the format <Vendor>Module<ServiceName>::<methodName>. - consumerInstance : The Magento class name that consumes the message - connection : For AMQP connections, the connection name must match the connection attribute in the queue_topology.xml file. Otherwise, the connection name must be db.
  37. 37. © 2019 Magento, Inc. Page | 37 So many files right ?
  38. 38. © 2019 Magento, Inc. Page | 38 Enough XMLs now its PHP time !!
  39. 39. © 2019 Magento, Inc. Page | 39 Request Class Declaration
  40. 40. © 2019 Magento, Inc. Page | 40 Requested Class in Communication.xml
  41. 41. © 2019 Magento, Inc. Page | 41 Requested Class Interface
  42. 42. © 2019 Magento, Inc. Page | 42 Concrete Class Declaration
  43. 43. © 2019 Magento, Inc. Page | 43 Concrete Class declare in etc/di.xml
  44. 44. © 2019 Magento, Inc. Page | 44 Concrete Class Implementation
  45. 45. © 2019 Magento, Inc. Page | 45 Publishing The Message
  46. 46. © 2019 Magento, Inc. Page | 46 Publish The Message in Controller
  47. 47. © 2019 Magento, Inc. Page | 47 MagentoFrameworkMessageQueuePu blisherInterface
  48. 48. © 2019 Magento, Inc. Page | 48 Publish The Message in Controller
  49. 49. © 2019 Magento, Inc. Page | 49 Consume The Message
  50. 50. © 2019 Magento, Inc. Page | 50 Consume The Message
  51. 51. © 2019 Magento, Inc. Page | 51 Finally Code Implementation Done !!!
  52. 52. © 2019 Magento, Inc. Page | 52 Execute The Queue
  53. 53. © 2019 Magento, Inc. Page | 53 Wait we need to run the command before executing the Queue
  54. 54. © 2019 Magento, Inc. Page | 54 Upgrade Command Install the Queue Module
  55. 55. © 2019 Magento, Inc. Page | 55 What is happening in background when command executed ?
  56. 56. © 2019 Magento, Inc. Page | 56 Queue Table
  57. 57. © 2019 Magento, Inc. Page | 57 Now Let’s Publish the Queue using Controller
  58. 58. © 2019 Magento, Inc. Page | 58 [base_url]/queue1/index/index
  59. 59. © 2019 Magento, Inc. Page | 59 What happen in background when queue published?
  60. 60. © 2019 Magento, Inc. Page | 60 queue_message Table
  61. 61. © 2019 Magento, Inc. Page | 61 It’s time to consume the published message
  62. 62. © 2019 Magento, Inc. Page | 62 View a list of available message queue consumers
  63. 63. © 2019 Magento, Inc. Page | 63 View a list of available message queue consumers
  64. 64. © 2019 Magento, Inc. Page | 64 Command that consume the message
  65. 65. © 2019 Magento, Inc. Page | 65 Consume the message
  66. 66. © 2019 Magento, Inc. Page | 66 What happen when consumer start processing ?
  67. 67. © 2019 Magento, Inc. Page | 67 queue_message_status table
  68. 68. © 2019 Magento, Inc. Page | 68 queue_message_status table
  69. 69. © 2019 Magento, Inc. Page | 69 status column in queue_message_status table
  70. 70. © 2019 Magento, Inc. Page | 70 Queue Execution On Production
  71. 71. © 2019 Magento, Inc. Page | 71 MySQL Message Queue Setting Stores > Settings > Configuration > Advanced > System > Cron
  72. 72. © 2019 Magento, Inc. Page | 72 Configure cron job consumer_runner in app/etc/env.php
  73. 73. © 2019 Magento, Inc. Page | 73  cron_run - the option for enabling/disabling cron job consumers_runner, by default is true.  max_messages - the maximum number of messages for each consumer that must be processed before consumer terminate, by default is 1000. If it is 0, then the consumer never stops working.  consumers - the list of consumers which will be run, by default is empty array (all consumers are allowed to be run). consumer_runner parameter Details
  74. 74. © 2019 Magento, Inc. Page | 74 Start message queue consumers
  75. 75. © 2019 Magento, Inc. Page | 75 Start message queue consumers
  76. 76. © 2019 Magento, Inc. Page | 76 Now you know pretty well about Queue
  77. 77. © 2019 Magento, Inc. Page | 77 Questions ?
  78. 78. © 2019 Magento, Inc. Page | 78 Thank You

×