SlideShare una empresa de Scribd logo
1 de 87
Background
Processing
   with Nanite




                 By Jennifer Davis
Overview
Overview
Overview

• Nanite
Overview

• Nanite
• RabbitMQ/AMQP
Overview

• Nanite
• RabbitMQ/AMQP
• Code Example
Overview

• Nanite
• RabbitMQ/AMQP
• Code Example
• Questions
Overview
Background Processing
Background Processing
Background Processing

Q. Don’t we already do background
processing with BackgrounDRb?
Background Processing

Q. Don’t we already do background
processing with BackgrounDRb?
A. Yes, but it is not scalable for our needs.
Background Processing
Background Processing
Background Processing

Q. Why Nanite?
Background Processing

Q. Why Nanite?
A. Although other methods of background
processing exist, Nanite is more suited to
our needs.
Background Processing
Nanite
Nanite
Nanite

“A Self Assembling Cluster of Ruby Daemons”
                                - Ezra Zygmuntowicz
Nanite
Nanite
Nanite
Composed of Mappers and Agents
Nanite
         Composed of Mappers and Agents
 Thin

Mapper
Nanite
         Composed of Mappers and Agents
 Thin

Mapper




 Shell

Mapper
Nanite
         Composed of Mappers and Agents
 Thin

           A
Mapper
           M          Message
                      Queue
           Q
                     (RabbitMQ)
           P
 Shell

Mapper
Nanite
         Composed of Mappers and Agents
                                          Agent
 Thin
                                          Actor
           A
Mapper                                    Actor
           M          Message
                                          Actor
                      Queue
           Q
                     (RabbitMQ)
           P
 Shell

Mapper
Nanite
         Composed of Mappers and Agents
                                          Agent
 Thin
                                          Actor
           A
Mapper                                    Actor
           M          Message
                                          Actor
                      Queue
           Q
                     (RabbitMQ)
           P                              Agent
 Shell
                                          Actor
Mapper                                    Actor
                                          Actor
Nanite
         Composed of Mappers and Agents
                                          Agent
 Thin
                                          Actor
           A                       A
Mapper                                    Actor
           M                       M
                      Message
                                          Actor
                      Queue
           Q                       Q
                     (RabbitMQ)
           P                       P      Agent
 Shell
                                          Actor
Mapper                                    Actor
                                          Actor
Nanite
         Composed of Mappers and Agents
                                          Agent
 Thin
                                          Actor
           A                       A
Mapper                                    Actor
           M                       M
                      Message
                                          Actor
                      Queue
           Q                       Q
                     (RabbitMQ)
           P                       P      Agent
 Shell
                                          Actor
Mapper                                    Actor
                                          Actor
Nanite
Nanite
Mappers
Nanite
Mappers
• Can have one or many
Nanite
Mappers
• Can have one or many
• Run within Rails or the shell
Nanite
Mappers
• Can have one or many
• Run within Rails or the shell
• Subscribed to the Mapper Exchange
Nanite
Mappers
• Can have one or many
• Run within Rails or the shell
• Subscribed to the Mapper Exchange
• Adds/Removes agents based on agent
  availability
Nanite
Nanite
Nanite
Agents
Nanite
Agents
• Can have one or many
Nanite
Agents
• Can have one or many
• Ping the Mapper Exchange every
   @ping_time seconds
Nanite
Agents
• Can have one or many
• Ping the Mapper Exchange every
   @ping_time seconds
• A single agent can have many actor
   classes
Nanite
Nanite
Nanite
Selectors for load balancing
Nanite
Selectors for load balancing
• :least_loaded
Nanite
Selectors for load balancing
• :least_loaded
• :rr
Nanite
Selectors for load balancing
• :least_loaded
• :rr
• :random
Nanite
Selectors for load balancing
• :least_loaded
• :rr
• :random
• :all
Nanite
Nanite
                               Agent
 Thin
                               Actor
         A                 A
Mapper                         Actor
         M                 M
               Message
                               Actor
               Queue
         Q                 Q
              (RabbitMQ)
         P                 P   Agent
 Shell
                               Actor
Mapper                         Actor
                               Actor
Nanite
                               Agent
 Thin
                               Actor
         A                 A
Mapper                         Actor
         M                 M
               Message
                               Actor
               Queue
         Q                 Q
              (RabbitMQ)
         P                 P   Agent
 Shell
                               Actor
Mapper                         Actor
                               Actor
Nanite
                           Ping back status   Agent
 Thin
                                              Actor
         A                             A
Mapper                                        Actor
         M                             M
               Message
                                              Actor
               Queue
         Q                             Q
              (RabbitMQ)
         P                             P      Agent
 Shell
                                              Actor
Mapper                                        Actor
                                              Actor
Nanite
                               Agent
 Thin
                               Actor
         A                 A
Mapper                         Actor
         M                 M
               Message
                               Actor
               Queue
         Q                 Q
              (RabbitMQ)
         P                 P   Agent
 Shell
                               Actor
Mapper                         Actor
                               Actor
Nanite
Nanite
Nanite requires
Nanite
Nanite requires
• Erlang
Nanite
Nanite requires
• Erlang
• Nanite ruby gem
Nanite
Nanite requires
• Erlang
• Nanite ruby gem
• EventMachine
Nanite
Nanite requires
• Erlang
• Nanite ruby gem
• EventMachine
• AMQP
Nanite
Nanite requires
• Erlang
• Nanite ruby gem
• EventMachine
• AMQP
• RabbitMQ
Nanite
AMQP
AMQP
AMQP
Advanced Messaging Queue Protocol
AMQP
Advanced Messaging Queue Protocol
• An open Internet Protocol for Business
   Messaging
AMQP
Advanced Messaging Queue Protocol
• An open Internet Protocol for Business
   Messaging
• Provides a standard for messaging
   middleware
AMQP
RabbitMQ
RabbitMQ
RabbitMQ
• An AMQP Messaging Broker
RabbitMQ
• An AMQP Messaging Broker
• Written in Erlang
RabbitMQ
• An AMQP Messaging Broker
• Written in Erlang
• Uses the OTP (Open Telecom Platform)
  system
RabbitMQ
• An AMQP Messaging Broker
• Written in Erlang
• Uses the OTP (Open Telecom Platform)
  system
• Is stable - Achieved 99.9999999% availability
RabbitMQ
Code Example
Review
Review

• Why background processing is important
  to us
• What Nanite is and how to use it
• A little background on RabbitMQ
Review
Review

• Why background processing is important
  to us
• What Nanite is and how to use it
• A little background on RabbitMQ
Resources
Resources
•   Ezra Zygmuntowicz’s Nanite on Github at http://github.com/ezmobius/
    nanite/tree/master/
Resources
•   Ezra Zygmuntowicz’s Nanite on Github at http://github.com/ezmobius/
    nanite/tree/master/

•   George Palmer’s RubyManor Nanite presentation at http://rubymanor.org/
    videos/nanite/
Resources
•   Ezra Zygmuntowicz’s Nanite on Github at http://github.com/ezmobius/
    nanite/tree/master/

•   George Palmer’s RubyManor Nanite presentation at http://rubymanor.org/
    videos/nanite/

•   RabbitMQ - Open Source Enterprise Messaging at http://
    www.rabbitmq.com/
Resources
•   Ezra Zygmuntowicz’s Nanite on Github at http://github.com/ezmobius/
    nanite/tree/master/

•   George Palmer’s RubyManor Nanite presentation at http://rubymanor.org/
    videos/nanite/

•   RabbitMQ - Open Source Enterprise Messaging at http://
    www.rabbitmq.com/

•   AMQP - Advanced Message Queuing Protocol at http://jira.amqp.org/
    confluence/display/AMQP/Advanced+Message+Queuing+Protocol
Resources
Questions?

Más contenido relacionado

Destacado

India wid other countries
India wid other countriesIndia wid other countries
India wid other countriesPrerna Verma
 
A Macro Analysis of India and Nepal Bilateral Trade: Retrospect and Prospects
A Macro Analysis of India and Nepal Bilateral Trade: Retrospect and ProspectsA Macro Analysis of India and Nepal Bilateral Trade: Retrospect and Prospects
A Macro Analysis of India and Nepal Bilateral Trade: Retrospect and Prospectsiosrjce
 
USA Economy, International Trade & Bilateral trade with India
USA Economy, International Trade & Bilateral trade with India USA Economy, International Trade & Bilateral trade with India
USA Economy, International Trade & Bilateral trade with India Piyush Patidar
 
Foreign Trade of India: Critical Analysis
Foreign Trade of India: Critical AnalysisForeign Trade of India: Critical Analysis
Foreign Trade of India: Critical AnalysisTony Sebastian
 
India's trade policy.ppt
India's trade policy.pptIndia's trade policy.ppt
India's trade policy.pptShikha Gupta
 
International trade in india ppt
International trade in india pptInternational trade in india ppt
International trade in india pptshivujagga
 

Destacado (9)

India wid other countries
India wid other countriesIndia wid other countries
India wid other countries
 
A Macro Analysis of India and Nepal Bilateral Trade: Retrospect and Prospects
A Macro Analysis of India and Nepal Bilateral Trade: Retrospect and ProspectsA Macro Analysis of India and Nepal Bilateral Trade: Retrospect and Prospects
A Macro Analysis of India and Nepal Bilateral Trade: Retrospect and Prospects
 
India's Foreign Trade
India's Foreign TradeIndia's Foreign Trade
India's Foreign Trade
 
USA Economy, International Trade & Bilateral trade with India
USA Economy, International Trade & Bilateral trade with India USA Economy, International Trade & Bilateral trade with India
USA Economy, International Trade & Bilateral trade with India
 
Indo us relation
Indo us relationIndo us relation
Indo us relation
 
Foreign Trade of India: Critical Analysis
Foreign Trade of India: Critical AnalysisForeign Trade of India: Critical Analysis
Foreign Trade of India: Critical Analysis
 
Us India Relations
Us India RelationsUs India Relations
Us India Relations
 
India's trade policy.ppt
India's trade policy.pptIndia's trade policy.ppt
India's trade policy.ppt
 
International trade in india ppt
International trade in india pptInternational trade in india ppt
International trade in india ppt
 

Último

Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 

Último (20)

Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 

Background Processing with Nanite

Notas del editor

  1. BackgrounDRb BackgroundJob Starling with Workling
  2. BackgrounDRb BackgroundJob Starling with Workling
  3. BackgrounDRb BackgroundJob Starling with Workling
  4. It’s highly scalable and provides failover. Workers can easily be removed and added therefore adding to the reliability and availability of the application. It relies on message queueing and provides load balancing.
  5. It’s highly scalable and provides failover. Workers can easily be removed and added therefore adding to the reliability and availability of the application. It relies on message queueing and provides load balancing.
  6. The control nodes for Nanite Right now we only have one All mappers are copied the ping times from the agents
  7. The control nodes for Nanite Right now we only have one All mappers are copied the ping times from the agents
  8. The control nodes for Nanite Right now we only have one All mappers are copied the ping times from the agents
  9. The control nodes for Nanite Right now we only have one All mappers are copied the ping times from the agents
  10. The control nodes for Nanite Right now we only have one All mappers are copied the ping times from the agents
  11. The control nodes for Nanite Right now we only have one All mappers are copied the ping times from the agents
  12. The default status advertised is the load average as a float. Used for determining the default request dispatching based on the least loaded server. The status can be changed as long as it’s something that’s comparable Selectors include :rr, :random, :all, :least_loaded (default) Return state - default is the load of the server they’re currently running on
  13. The default status advertised is the load average as a float. Used for determining the default request dispatching based on the least loaded server. The status can be changed as long as it’s something that’s comparable Selectors include :rr, :random, :all, :least_loaded (default) Return state - default is the load of the server they’re currently running on
  14. The default status advertised is the load average as a float. Used for determining the default request dispatching based on the least loaded server. The status can be changed as long as it’s something that’s comparable Selectors include :rr, :random, :all, :least_loaded (default) Return state - default is the load of the server they’re currently running on
  15. The default status advertised is the load average as a float. Used for determining the default request dispatching based on the least loaded server. The status can be changed as long as it’s something that’s comparable Selectors include :rr, :random, :all, :least_loaded (default) Return state - default is the load of the server they’re currently running on
  16. The default status advertised is the load average as a float. Used for determining the default request dispatching based on the least loaded server. The status can be changed as long as it’s something that’s comparable Selectors include :rr, :random, :all, :least_loaded (default) Return state - default is the load of the server they’re currently running on
  17. The default status advertised is the load average as a float. Used for determining the default request dispatching based on the least loaded server. The status can be changed as long as it’s something that’s comparable Selectors include :rr, :random, :all, :least_loaded (default) Return state - default is the load of the server they’re currently running on
  18. By complying to the AMQP standard, middleware products written for different platforms and in different languages can send messages to one another. AMQP addresses the problem of transporting value-bearing messages across and between organisations in a timely manner. The \"exchange\" receives messages from publisher applications and routes these to \"message queues\", based on arbitrary criteria - usually message properties or content. The \"message queue\" stores messages until they can be safely processed by a consuming client application (or multiple applications). The \"binding\" defines the relationship between a message queue and an exchange and provides the message routing criteria. Standard proposed by industrial banks High performance Nanite implements AMQP
  19. By complying to the AMQP standard, middleware products written for different platforms and in different languages can send messages to one another. AMQP addresses the problem of transporting value-bearing messages across and between organisations in a timely manner. The \"exchange\" receives messages from publisher applications and routes these to \"message queues\", based on arbitrary criteria - usually message properties or content. The \"message queue\" stores messages until they can be safely processed by a consuming client application (or multiple applications). The \"binding\" defines the relationship between a message queue and an exchange and provides the message routing criteria. Standard proposed by industrial banks High performance Nanite implements AMQP
  20. By complying to the AMQP standard, middleware products written for different platforms and in different languages can send messages to one another. AMQP addresses the problem of transporting value-bearing messages across and between organisations in a timely manner. The \"exchange\" receives messages from publisher applications and routes these to \"message queues\", based on arbitrary criteria - usually message properties or content. The \"message queue\" stores messages until they can be safely processed by a consuming client application (or multiple applications). The \"binding\" defines the relationship between a message queue and an exchange and provides the message routing criteria. Standard proposed by industrial banks High performance Nanite implements AMQP
  21. By complying to the AMQP standard, middleware products written for different platforms and in different languages can send messages to one another. AMQP addresses the problem of transporting value-bearing messages across and between organisations in a timely manner. The \"exchange\" receives messages from publisher applications and routes these to \"message queues\", based on arbitrary criteria - usually message properties or content. The \"message queue\" stores messages until they can be safely processed by a consuming client application (or multiple applications). The \"binding\" defines the relationship between a message queue and an exchange and provides the message routing criteria. Standard proposed by industrial banks High performance Nanite implements AMQP