Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Using Magento 2.3 MySQL Queues

442 Aufrufe

Veröffentlicht am

Basic Queue Implementation in Magento 2

Veröffentlicht in: 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

×