SlideShare uma empresa Scribd logo
1 de 78
© 2019 Magento, Inc. Page | 1
Magento 2.3
Using MySQL For Queues
© 2019 Magento, Inc.
.
Page | 2
Senior Software Developer at BORN Group
Renu Mishra
© 2019 Magento, Inc. Page | 3
Agenda
© 2019 Magento, Inc. Page | 4
Agenda
 Need Of Queue
 Introduction to Queues
 Creating Queues with MySQL
 Publishing messages to Queue
 Consuming the published message
© 2019 Magento, Inc. Page | 5
Not In Scope
© 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.
© 2019 Magento, Inc. Page | 7
What is Queue and it’s
uses ?
© 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.
© 2019 Magento, Inc. Page | 9
Introduction Of Queue
© 2019 Magento, Inc. Page | 10
Queue Processing Diagram
Routes
© 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.
© 2019 Magento, Inc. Page | 12
Enough Talk Let’s Get
Started!
© 2019 Magento, Inc. Page | 13
Registering The Module
© 2019 Magento, Inc. Page | 14
<module_root>/registration.php
© 2019 Magento, Inc. Page | 15
<module_root>/etc/module.xml
© 2019 Magento, Inc. Page | 16
Let’s Creates the Queue Files
Now
© 2019 Magento, Inc. Page | 17
Declaring The Publisher
© 2019 Magento, Inc. Page | 18
Send the message to broker
© 2019 Magento, Inc. Page | 19
<module_root>/etc/publisher.xml
© 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.
© 2019 Magento, Inc. Page | 21
<module_root>/etc/communication.xml
© 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.
© 2019 Magento, Inc. Page | 23
Declare The Broker
© 2019 Magento, Inc. Page | 24
Receive the Data From
Producer/Publisher
© 2019 Magento, Inc. Page | 25
<module_root>/etc/queue.xml
© 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.
© 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>.
© 2019 Magento, Inc. Page | 28
Declaring The Topology
© 2019 Magento, Inc. Page | 29
Queue route topics to consumers
© 2019 Magento, Inc. Page | 30
<module_root>/etc/queue_topology.xml
© 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.
© 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.
© 2019 Magento, Inc. Page | 33
Declaring The Consumer
© 2019 Magento, Inc. Page | 34
Consume the publish message
Routes
© 2019 Magento, Inc. Page | 35
<module_root>/etc/queue_consumer.xml
© 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.
© 2019 Magento, Inc. Page | 37
So many files right ?
© 2019 Magento, Inc. Page | 38
Enough XMLs now its PHP
time !!
© 2019 Magento, Inc. Page | 39
Request Class Declaration
© 2019 Magento, Inc. Page | 40
Requested Class in Communication.xml
© 2019 Magento, Inc. Page | 41
Requested Class Interface
© 2019 Magento, Inc. Page | 42
Concrete Class
Declaration
© 2019 Magento, Inc. Page | 43
Concrete Class declare in etc/di.xml
© 2019 Magento, Inc. Page | 44
Concrete Class Implementation
© 2019 Magento, Inc. Page | 45
Publishing The Message
© 2019 Magento, Inc. Page | 46
Publish The Message in Controller
© 2019 Magento, Inc. Page | 47
MagentoFrameworkMessageQueuePu
blisherInterface
© 2019 Magento, Inc. Page | 48
Publish The Message in Controller
© 2019 Magento, Inc. Page | 49
Consume The Message
© 2019 Magento, Inc. Page | 50
Consume The Message
© 2019 Magento, Inc. Page | 51
Finally Code
Implementation Done !!!
© 2019 Magento, Inc. Page | 52
Execute The Queue
© 2019 Magento, Inc. Page | 53
Wait we need to run the
command before
executing the Queue
© 2019 Magento, Inc. Page | 54
Upgrade Command
Install the Queue Module
© 2019 Magento, Inc. Page | 55
What is happening in
background when
command executed ?
© 2019 Magento, Inc. Page | 56
Queue Table
© 2019 Magento, Inc. Page | 57
Now Let’s Publish the
Queue using Controller
© 2019 Magento, Inc. Page | 58
[base_url]/queue1/index/index
© 2019 Magento, Inc. Page | 59
What happen in
background when queue
published?
© 2019 Magento, Inc. Page | 60
queue_message Table
© 2019 Magento, Inc. Page | 61
It’s time to consume the
published message
© 2019 Magento, Inc. Page | 62
View a list of available
message queue
consumers
© 2019 Magento, Inc. Page | 63
View a list of available message queue
consumers
© 2019 Magento, Inc. Page | 64
Command that consume
the message
© 2019 Magento, Inc. Page | 65
Consume the message
© 2019 Magento, Inc. Page | 66
What happen when
consumer start processing
?
© 2019 Magento, Inc. Page | 67
queue_message_status table
© 2019 Magento, Inc. Page | 68
queue_message_status table
© 2019 Magento, Inc. Page | 69
status column in queue_message_status
table
© 2019 Magento, Inc. Page | 70
Queue Execution On
Production
© 2019 Magento, Inc. Page | 71
MySQL Message Queue Setting
Stores > Settings > Configuration > Advanced > System > Cron
© 2019 Magento, Inc. Page | 72
Configure cron job consumer_runner in
app/etc/env.php
© 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
© 2019 Magento, Inc. Page | 74
Start message queue consumers
© 2019 Magento, Inc. Page | 75
Start message queue consumers
© 2019 Magento, Inc. Page | 76
Now you know pretty
well about Queue
© 2019 Magento, Inc. Page | 77
Questions ?
© 2019 Magento, Inc. Page | 78
Thank You

Mais conteúdo relacionado

Semelhante a Using Magento 2.3 MySQL Queues

Eugene Shakhsuvarov - Improving enterprise store scalability using AMQP and A...
Eugene Shakhsuvarov - Improving enterprise store scalability using AMQP and A...Eugene Shakhsuvarov - Improving enterprise store scalability using AMQP and A...
Eugene Shakhsuvarov - Improving enterprise store scalability using AMQP and A...Meet Magento Italy
 
IRJET- Development of Android Application for Device to Device Communication ...
IRJET- Development of Android Application for Device to Device Communication ...IRJET- Development of Android Application for Device to Device Communication ...
IRJET- Development of Android Application for Device to Device Communication ...IRJET Journal
 
API design best practices
API design best practicesAPI design best practices
API design best practicesIgor Miniailo
 
Eugene Shaksuvarov - Tuning Magento 2 for Maximum Performance
Eugene Shaksuvarov - Tuning Magento 2 for Maximum PerformanceEugene Shaksuvarov - Tuning Magento 2 for Maximum Performance
Eugene Shaksuvarov - Tuning Magento 2 for Maximum PerformanceMeet Magento Italy
 
Magento2.3 - GraphQL introduction
Magento2.3  - GraphQL introductionMagento2.3  - GraphQL introduction
Magento2.3 - GraphQL introductionVishakha Borkar
 
01. lab instructions starting project
01. lab instructions   starting project01. lab instructions   starting project
01. lab instructions starting projectrajul14
 
Igor Miniailo - Magento 2 API Design Best Practices
Igor Miniailo - Magento 2 API Design Best PracticesIgor Miniailo - Magento 2 API Design Best Practices
Igor Miniailo - Magento 2 API Design Best PracticesAtwix
 
Backward Compatibility Developer's Guide in Magento 2. #MM17CZ
Backward Compatibility Developer's Guide in Magento 2. #MM17CZBackward Compatibility Developer's Guide in Magento 2. #MM17CZ
Backward Compatibility Developer's Guide in Magento 2. #MM17CZIgor Miniailo
 
API Design Best Practices by Igor Miniailo
API Design Best Practices by Igor MiniailoAPI Design Best Practices by Igor Miniailo
API Design Best Practices by Igor MiniailoMagecom UK Limited
 
2019 03-13-implementing microservices by ddd
2019 03-13-implementing microservices by ddd2019 03-13-implementing microservices by ddd
2019 03-13-implementing microservices by dddKim Kao
 
Implementing Microservices by DDD
Implementing Microservices by DDDImplementing Microservices by DDD
Implementing Microservices by DDDAmazon Web Services
 
Magento Function Testing Framework - Intro and Overview
Magento Function Testing Framework - Intro and OverviewMagento Function Testing Framework - Intro and Overview
Magento Function Testing Framework - Intro and OverviewTom Erskine
 
IRJET- Custom CMS using Smarty Template Engine for Mobile Portal
IRJET- Custom CMS using Smarty Template Engine for Mobile PortalIRJET- Custom CMS using Smarty Template Engine for Mobile Portal
IRJET- Custom CMS using Smarty Template Engine for Mobile PortalIRJET Journal
 
IBM Think 2018: IBM MQ High Availability
IBM Think 2018: IBM MQ High AvailabilityIBM Think 2018: IBM MQ High Availability
IBM Think 2018: IBM MQ High AvailabilityJamie Squibb
 
James Zetlen - PWA Studio Integration…With You
James Zetlen - PWA Studio Integration…With YouJames Zetlen - PWA Studio Integration…With You
James Zetlen - PWA Studio Integration…With YouMeet Magento Italy
 
Magento 2 Declarative Schema
Magento 2 Declarative SchemaMagento 2 Declarative Schema
Magento 2 Declarative Schemaatishgoswami
 
Mage Titans USA 2016 Magento/Facebook/RabbitMQ
Mage Titans USA 2016 Magento/Facebook/RabbitMQMage Titans USA 2016 Magento/Facebook/RabbitMQ
Mage Titans USA 2016 Magento/Facebook/RabbitMQVrann Tulika
 
Mage Titans USA 2016 - Eugene Tulika - Integrations with Magento, end to end...
Mage Titans USA 2016 - Eugene Tulika -  Integrations with Magento, end to end...Mage Titans USA 2016 - Eugene Tulika -  Integrations with Magento, end to end...
Mage Titans USA 2016 - Eugene Tulika - Integrations with Magento, end to end...Stacey Whitney
 
Deep-Dive-with-Cloud-Monitoring-with-Amazon-EKS-and-Prometheus
Deep-Dive-with-Cloud-Monitoring-with-Amazon-EKS-and-PrometheusDeep-Dive-with-Cloud-Monitoring-with-Amazon-EKS-and-Prometheus
Deep-Dive-with-Cloud-Monitoring-with-Amazon-EKS-and-PrometheusAmazon Web Services
 
深探如何使用-Amazon-EKS-與-Prometheus-進行雲端監控
深探如何使用-Amazon-EKS-與-Prometheus-進行雲端監控深探如何使用-Amazon-EKS-與-Prometheus-進行雲端監控
深探如何使用-Amazon-EKS-與-Prometheus-進行雲端監控Amazon Web Services
 

Semelhante a Using Magento 2.3 MySQL Queues (20)

Eugene Shakhsuvarov - Improving enterprise store scalability using AMQP and A...
Eugene Shakhsuvarov - Improving enterprise store scalability using AMQP and A...Eugene Shakhsuvarov - Improving enterprise store scalability using AMQP and A...
Eugene Shakhsuvarov - Improving enterprise store scalability using AMQP and A...
 
IRJET- Development of Android Application for Device to Device Communication ...
IRJET- Development of Android Application for Device to Device Communication ...IRJET- Development of Android Application for Device to Device Communication ...
IRJET- Development of Android Application for Device to Device Communication ...
 
API design best practices
API design best practicesAPI design best practices
API design best practices
 
Eugene Shaksuvarov - Tuning Magento 2 for Maximum Performance
Eugene Shaksuvarov - Tuning Magento 2 for Maximum PerformanceEugene Shaksuvarov - Tuning Magento 2 for Maximum Performance
Eugene Shaksuvarov - Tuning Magento 2 for Maximum Performance
 
Magento2.3 - GraphQL introduction
Magento2.3  - GraphQL introductionMagento2.3  - GraphQL introduction
Magento2.3 - GraphQL introduction
 
01. lab instructions starting project
01. lab instructions   starting project01. lab instructions   starting project
01. lab instructions starting project
 
Igor Miniailo - Magento 2 API Design Best Practices
Igor Miniailo - Magento 2 API Design Best PracticesIgor Miniailo - Magento 2 API Design Best Practices
Igor Miniailo - Magento 2 API Design Best Practices
 
Backward Compatibility Developer's Guide in Magento 2. #MM17CZ
Backward Compatibility Developer's Guide in Magento 2. #MM17CZBackward Compatibility Developer's Guide in Magento 2. #MM17CZ
Backward Compatibility Developer's Guide in Magento 2. #MM17CZ
 
API Design Best Practices by Igor Miniailo
API Design Best Practices by Igor MiniailoAPI Design Best Practices by Igor Miniailo
API Design Best Practices by Igor Miniailo
 
2019 03-13-implementing microservices by ddd
2019 03-13-implementing microservices by ddd2019 03-13-implementing microservices by ddd
2019 03-13-implementing microservices by ddd
 
Implementing Microservices by DDD
Implementing Microservices by DDDImplementing Microservices by DDD
Implementing Microservices by DDD
 
Magento Function Testing Framework - Intro and Overview
Magento Function Testing Framework - Intro and OverviewMagento Function Testing Framework - Intro and Overview
Magento Function Testing Framework - Intro and Overview
 
IRJET- Custom CMS using Smarty Template Engine for Mobile Portal
IRJET- Custom CMS using Smarty Template Engine for Mobile PortalIRJET- Custom CMS using Smarty Template Engine for Mobile Portal
IRJET- Custom CMS using Smarty Template Engine for Mobile Portal
 
IBM Think 2018: IBM MQ High Availability
IBM Think 2018: IBM MQ High AvailabilityIBM Think 2018: IBM MQ High Availability
IBM Think 2018: IBM MQ High Availability
 
James Zetlen - PWA Studio Integration…With You
James Zetlen - PWA Studio Integration…With YouJames Zetlen - PWA Studio Integration…With You
James Zetlen - PWA Studio Integration…With You
 
Magento 2 Declarative Schema
Magento 2 Declarative SchemaMagento 2 Declarative Schema
Magento 2 Declarative Schema
 
Mage Titans USA 2016 Magento/Facebook/RabbitMQ
Mage Titans USA 2016 Magento/Facebook/RabbitMQMage Titans USA 2016 Magento/Facebook/RabbitMQ
Mage Titans USA 2016 Magento/Facebook/RabbitMQ
 
Mage Titans USA 2016 - Eugene Tulika - Integrations with Magento, end to end...
Mage Titans USA 2016 - Eugene Tulika -  Integrations with Magento, end to end...Mage Titans USA 2016 - Eugene Tulika -  Integrations with Magento, end to end...
Mage Titans USA 2016 - Eugene Tulika - Integrations with Magento, end to end...
 
Deep-Dive-with-Cloud-Monitoring-with-Amazon-EKS-and-Prometheus
Deep-Dive-with-Cloud-Monitoring-with-Amazon-EKS-and-PrometheusDeep-Dive-with-Cloud-Monitoring-with-Amazon-EKS-and-Prometheus
Deep-Dive-with-Cloud-Monitoring-with-Amazon-EKS-and-Prometheus
 
深探如何使用-Amazon-EKS-與-Prometheus-進行雲端監控
深探如何使用-Amazon-EKS-與-Prometheus-進行雲端監控深探如何使用-Amazon-EKS-與-Prometheus-進行雲端監控
深探如何使用-Amazon-EKS-與-Prometheus-進行雲端監控
 

Último

Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbuapidays
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 

Último (20)

Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 

Using Magento 2.3 MySQL Queues

  • 1. © 2019 Magento, Inc. Page | 1 Magento 2.3 Using MySQL For Queues
  • 2. © 2019 Magento, Inc. . Page | 2 Senior Software Developer at BORN Group Renu Mishra
  • 3. © 2019 Magento, Inc. Page | 3 Agenda
  • 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. © 2019 Magento, Inc. Page | 5 Not In Scope
  • 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. © 2019 Magento, Inc. Page | 7 What is Queue and it’s uses ?
  • 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. © 2019 Magento, Inc. Page | 9 Introduction Of Queue
  • 10. © 2019 Magento, Inc. Page | 10 Queue Processing Diagram Routes
  • 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. © 2019 Magento, Inc. Page | 12 Enough Talk Let’s Get Started!
  • 13. © 2019 Magento, Inc. Page | 13 Registering The Module
  • 14. © 2019 Magento, Inc. Page | 14 <module_root>/registration.php
  • 15. © 2019 Magento, Inc. Page | 15 <module_root>/etc/module.xml
  • 16. © 2019 Magento, Inc. Page | 16 Let’s Creates the Queue Files Now
  • 17. © 2019 Magento, Inc. Page | 17 Declaring The Publisher
  • 18. © 2019 Magento, Inc. Page | 18 Send the message to broker
  • 19. © 2019 Magento, Inc. Page | 19 <module_root>/etc/publisher.xml
  • 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. © 2019 Magento, Inc. Page | 21 <module_root>/etc/communication.xml
  • 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. © 2019 Magento, Inc. Page | 23 Declare The Broker
  • 24. © 2019 Magento, Inc. Page | 24 Receive the Data From Producer/Publisher
  • 25. © 2019 Magento, Inc. Page | 25 <module_root>/etc/queue.xml
  • 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. © 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. © 2019 Magento, Inc. Page | 28 Declaring The Topology
  • 29. © 2019 Magento, Inc. Page | 29 Queue route topics to consumers
  • 30. © 2019 Magento, Inc. Page | 30 <module_root>/etc/queue_topology.xml
  • 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. © 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. © 2019 Magento, Inc. Page | 33 Declaring The Consumer
  • 34. © 2019 Magento, Inc. Page | 34 Consume the publish message Routes
  • 35. © 2019 Magento, Inc. Page | 35 <module_root>/etc/queue_consumer.xml
  • 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. © 2019 Magento, Inc. Page | 37 So many files right ?
  • 38. © 2019 Magento, Inc. Page | 38 Enough XMLs now its PHP time !!
  • 39. © 2019 Magento, Inc. Page | 39 Request Class Declaration
  • 40. © 2019 Magento, Inc. Page | 40 Requested Class in Communication.xml
  • 41. © 2019 Magento, Inc. Page | 41 Requested Class Interface
  • 42. © 2019 Magento, Inc. Page | 42 Concrete Class Declaration
  • 43. © 2019 Magento, Inc. Page | 43 Concrete Class declare in etc/di.xml
  • 44. © 2019 Magento, Inc. Page | 44 Concrete Class Implementation
  • 45. © 2019 Magento, Inc. Page | 45 Publishing The Message
  • 46. © 2019 Magento, Inc. Page | 46 Publish The Message in Controller
  • 47. © 2019 Magento, Inc. Page | 47 MagentoFrameworkMessageQueuePu blisherInterface
  • 48. © 2019 Magento, Inc. Page | 48 Publish The Message in Controller
  • 49. © 2019 Magento, Inc. Page | 49 Consume The Message
  • 50. © 2019 Magento, Inc. Page | 50 Consume The Message
  • 51. © 2019 Magento, Inc. Page | 51 Finally Code Implementation Done !!!
  • 52. © 2019 Magento, Inc. Page | 52 Execute The Queue
  • 53. © 2019 Magento, Inc. Page | 53 Wait we need to run the command before executing the Queue
  • 54. © 2019 Magento, Inc. Page | 54 Upgrade Command Install the Queue Module
  • 55. © 2019 Magento, Inc. Page | 55 What is happening in background when command executed ?
  • 56. © 2019 Magento, Inc. Page | 56 Queue Table
  • 57. © 2019 Magento, Inc. Page | 57 Now Let’s Publish the Queue using Controller
  • 58. © 2019 Magento, Inc. Page | 58 [base_url]/queue1/index/index
  • 59. © 2019 Magento, Inc. Page | 59 What happen in background when queue published?
  • 60. © 2019 Magento, Inc. Page | 60 queue_message Table
  • 61. © 2019 Magento, Inc. Page | 61 It’s time to consume the published message
  • 62. © 2019 Magento, Inc. Page | 62 View a list of available message queue consumers
  • 63. © 2019 Magento, Inc. Page | 63 View a list of available message queue consumers
  • 64. © 2019 Magento, Inc. Page | 64 Command that consume the message
  • 65. © 2019 Magento, Inc. Page | 65 Consume the message
  • 66. © 2019 Magento, Inc. Page | 66 What happen when consumer start processing ?
  • 67. © 2019 Magento, Inc. Page | 67 queue_message_status table
  • 68. © 2019 Magento, Inc. Page | 68 queue_message_status table
  • 69. © 2019 Magento, Inc. Page | 69 status column in queue_message_status table
  • 70. © 2019 Magento, Inc. Page | 70 Queue Execution On Production
  • 71. © 2019 Magento, Inc. Page | 71 MySQL Message Queue Setting Stores > Settings > Configuration > Advanced > System > Cron
  • 72. © 2019 Magento, Inc. Page | 72 Configure cron job consumer_runner in app/etc/env.php
  • 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. © 2019 Magento, Inc. Page | 74 Start message queue consumers
  • 75. © 2019 Magento, Inc. Page | 75 Start message queue consumers
  • 76. © 2019 Magento, Inc. Page | 76 Now you know pretty well about Queue
  • 77. © 2019 Magento, Inc. Page | 77 Questions ?
  • 78. © 2019 Magento, Inc. Page | 78 Thank You