SlideShare a Scribd company logo
Multi-Platform Enterprise
Messaging with RabbitMQ
WHO AM I?
• Luis Majano
• Computer Engineer
• Imported from El Salvador ----->
• Architecture + Software Design
• CEO of Ortus Solutions
• Professional Open Source
www.ortussolutions.com
@ortussolutions
@lmajano
Why Messaging?
What is Messaging?
Different Implementations
AMQP Protocol
RabbitMQ
Demo
WHY MESSAGING
• 3 Issues (There are more)
• RPC
• Monoliths
• Integration + Scalability
Remote Procedure Call
TRADITIONAL RPC STYLE CALLS
Obj Obj
Obj
BUT….
• Blocks Requests
• Tight coupling
• Sender always knows about receiver
• Receiver knows about sender
• What if call errors out?
• What if call hangs?
PROBLEMS WITH RPC
How can we decouple knowledge?
How can we unblock?
Monolithic Apps
Multi-platform Enterprise Messaging with RabbitMQ
Scale 

+ 

Integrate
• Integrate many internal/external systems
• Integrate many languages
• Increase Decoupling
• Work with X amount of servers
• Notify X amount of servers of stuff
• Be more reactive to exceptions
• Federation
• ….
“Software is always bound to change”
HOW DO WE MODERNIZE?
Asynchronous
Decouple instead of tight coupling
Modularize
Either with HMVC Frameworks or Microservices
Scale and Integrate
Systems, Languages,Technologies, External Resources
SET SOME GOALS
Microservices

HMVC
Messaging
+
FORMULA FOR SUCCESS
MICROSERVICES
AN APPROACH TO DEVELOPING A SINGLE
APPLICATION AS A SUITE OF SMALL SERVICES,
EACH RUNNING IN ITS OWN PROCESS AND
COMMUNICATING WITH LIGHTWEIGHT
MECHANISMS.
Martin Fowler
MICROSERVICES
M C
V
M C
V
M C
V
Provide asynchronous communications
Many protocols
Many implementations
Many design patterns
Event-Driven Programming
ENTERPRISE MESSAGING
A
FUNDAMENTAL
CHANGE IN
APPROACH OR
UNDERLYING
ASSUMPTIONS.
PARADIGM SHIFT:
MESSAGING = CHANGE
Messaging (EMB)
Producer
Consumer Consumer Consumer
Messaging Bus - Broker
Can be
any system or
language
Can be
any system or
language
Doesn’t
care about
consumers
Asynchronous
Does not get a
response
• Producers lack knowledge -> Decouple
• Cross platforms-technologies -> Flexibility
• Event Driven Programming -> Scalability
• Queueing for later delivery
• Asynchronous
• Load balancing
• Hulkyfied services
Protocols
JMS AMQP STOMP
AMQP - www.amqp.org
• Advanced Message Queuing Protocol
• != JMS
• Standard binary protocol
• Exchanges
• Queuing
• Routing
• Reliable
• Secure
• Several Implementations
RabbitMQ
ActiveMQ
Qpid
StormMQ
https://www.slideshare.net/HassanBOUMARSEL/rabbitmq-an-amqp-message-broker
AMQP Messaging Broker
Other Protocols: MQTT, HTTP, STOMP
Erlang
Extremely fast, reliable and secure
Polyglot: c#, erlang, java, python, ruby, node, cfml, etc
Its like a post box, post office and postman
• Producer
• Application that sends the message
• Consumer
• Application that receives the message
• Queue
• Buffer that stores the message
• Message
• Info sent from producer to consumer
• Connection
• TCP Connection between application and RabbitMQ
• Channel
• A virtual connection inside aTCP connection. 

Multiplexing
Concepts
• Exchange
• Receives messages and pushes them to
queues depending on routing rules.
Queues are bounds to exchanges
• Binding
• A link between a queue and an exchange
• Routing Key
• A key that the exchange looks to decide
how to route the message. Like an
address
• Users
• You can identify yourself to Rabbit with a
username/password and have assigned
permissions
Concepts
tryrabbitmq.com
cloudamqp.com
Managed RabbitMQ Cloud Servers
HOW IT WORKS?
Producer
Message
(Body+Routing Key)
Exchange (Bindings via Routing Key)
Body = binary,
json, anything
stock.

prices
stock.

run
log.

error
cluster
Queues are bound to exchanges with patterns
Routing key =
Bindings
Queues
Usages and Patterns
Direct Messaging
Can use a routing key
Work Queues
Can use a routing key
Publish/Subscribe or Fanout
Topics/Routing
• Direct + Workers
• Routing key = queue name
• No mapping or extra fluff just a passthrough
• Topic
• Binding pattern (routing key) is match against the queue name
• Not full regex
• Ex: log.*, log#
• Not like JMSTopics, forget JMS, this is not JMS
• Fanout
• Sends messages to all queues bound to it
• One message to multiple recipients
• No load balancing, everybody gets the message
• Similar to JMS
EXCHANGETYPES
LOAD BALANCING + ACK
Worker
Queue
Consumer
Consumer
Consumer
Messages are
round-robin
to each
consumer
!
Consumer
need to
ack
DEMOTIME
Disclaimer: LIVE CODING,ANYTHING CAN HAPPEN
Disclaimer: LIVE CODING,ANYTHING CAN HAPPEN
Worker
Queue
CFML
ConsumerStock
Producer
Java
Consumer
Groovy
Consumer
NodeJS
Consumer
HTML
STOMP
CLI, Package Manager, Embedded Servlet
Container, REPL, More
install lmajano/messaging-polyglot
Q & A
• RabbitMQ In Action Book
• RabbitMQ In Depth Book
• http://www.rabbitmq.com
• http://tryrabbitmq.com
• https://github.com/lmajano/messaging-polyglot
• https://github.com/RabbitMQSimulator/RabbitMQSimulator
• http://koo.fi/blog/2013/02/18/web-messaging-with-rabbitmq-web-stomp-and-
sockjs/
• https://github.com/robharrop/presentations.git
• https://www.slideshare.net/norbu09/rabbitmq-1731778?next_slideshow=1

More Related Content

PPTX
High powered messaging with RabbitMQ
PDF
Messaging with amqp and rabbitmq
PPTX
The RabbitMQ Message Broker
PDF
Messaging Standards and Systems - AMQP & RabbitMQ
PDF
The Future of Messaging: RabbitMQ and AMQP
PDF
Architecture | The Future of Messaging: RabbitMQ and AMQP | Eberhard Wolff
PDF
What we've learned from running thousands of production RabbitMQ clusters - L...
PPTX
Rabbit MQ introduction
High powered messaging with RabbitMQ
Messaging with amqp and rabbitmq
The RabbitMQ Message Broker
Messaging Standards and Systems - AMQP & RabbitMQ
The Future of Messaging: RabbitMQ and AMQP
Architecture | The Future of Messaging: RabbitMQ and AMQP | Eberhard Wolff
What we've learned from running thousands of production RabbitMQ clusters - L...
Rabbit MQ introduction

What's hot (20)

PDF
Messaging with RabbitMQ and AMQP
PDF
Real life XMPP Instant Messaging
PDF
Rabbitmq basics
PPTX
Message Broker System and RabbitMQ
PDF
IoT Studio #1: Protocols introduction and connected jukebox
PPTX
RabbitMQ and AMQP Model
PDF
Scaling applications with RabbitMQ at SunshinePHP
PPTX
Modern Distributed Messaging and RPC
PDF
An update from the RabbitMQ team - Michael Klishin
PDF
AMQP with RabbitMQ
PDF
Introduction to AMQP Messaging with RabbitMQ
PPTX
RabbitMq
PPT
Easy enterprise application integration with RabbitMQ and AMQP
ODP
Introduction To RabbitMQ
PDF
Dissecting the rabbit: RabbitMQ Internal Architecture
PDF
RabbitMQ vs Apache Kafka - Part 1
PPTX
Spring RabbitMQ
PPTX
XMPP Academy #2
PPTX
Deterministic behaviour and performance in trading systems
PDF
RabbitMQ with python and ruby RuPy 2009
Messaging with RabbitMQ and AMQP
Real life XMPP Instant Messaging
Rabbitmq basics
Message Broker System and RabbitMQ
IoT Studio #1: Protocols introduction and connected jukebox
RabbitMQ and AMQP Model
Scaling applications with RabbitMQ at SunshinePHP
Modern Distributed Messaging and RPC
An update from the RabbitMQ team - Michael Klishin
AMQP with RabbitMQ
Introduction to AMQP Messaging with RabbitMQ
RabbitMq
Easy enterprise application integration with RabbitMQ and AMQP
Introduction To RabbitMQ
Dissecting the rabbit: RabbitMQ Internal Architecture
RabbitMQ vs Apache Kafka - Part 1
Spring RabbitMQ
XMPP Academy #2
Deterministic behaviour and performance in trading systems
RabbitMQ with python and ruby RuPy 2009
Ad

Similar to Multi-platform Enterprise Messaging with RabbitMQ (20)

PDF
Enterprise Messaging with RabbitMQ.pdf
PDF
Multiply like rabbits with rabbit mq
PDF
Multiply like rabbits with rabbit mq
PDF
Enterprise messaging
PDF
CBDW2014 - Down the RabbitMQ hole with ColdFusion
PDF
Decouple and scale with enterprise messaging
PDF
Adding Real-time Features to PHP Applications
KEY
High scale flavour
PPTX
RabbitMQ and AMQP with .net client library
PDF
Ruby Microservices with RabbitMQ
PDF
Multi-language/multi-OS communication using RabbitMQ
PDF
ITB2019 Multi-language / multi-OS communication using RabbitMQ - Wil de Bruin
PPTX
Picking a message queue
KEY
Real time system_performance_mon
PPTX
Beyond REST and RPC: Asynchronous Eventing and Messaging Patterns
PPTX
Linux Inter Process Communication
PDF
GoSF Summerfest - Why Go at Apcera
PPTX
CoAP Talk
PPTX
Cross-platform interaction
PDF
Foundational Design Patterns for Multi-Purpose Applications
Enterprise Messaging with RabbitMQ.pdf
Multiply like rabbits with rabbit mq
Multiply like rabbits with rabbit mq
Enterprise messaging
CBDW2014 - Down the RabbitMQ hole with ColdFusion
Decouple and scale with enterprise messaging
Adding Real-time Features to PHP Applications
High scale flavour
RabbitMQ and AMQP with .net client library
Ruby Microservices with RabbitMQ
Multi-language/multi-OS communication using RabbitMQ
ITB2019 Multi-language / multi-OS communication using RabbitMQ - Wil de Bruin
Picking a message queue
Real time system_performance_mon
Beyond REST and RPC: Asynchronous Eventing and Messaging Patterns
Linux Inter Process Communication
GoSF Summerfest - Why Go at Apcera
CoAP Talk
Cross-platform interaction
Foundational Design Patterns for Multi-Purpose Applications
Ad

More from Ortus Solutions, Corp (20)

PDF
TheFutureIsDynamic-BoxLang witch Luis Majano.pdf
PDF
June Webinar: BoxLang-Dynamic-AWS-Lambda
PDF
BoxLang-Dynamic-AWS-Lambda by Luis Majano.pdf
PDF
What's-New-with-BoxLang-Brad Wood.pptx.pdf
PDF
Getting Started with BoxLang - CFCamp 2025.pdf
PDF
CFCamp2025 - Keynote Day 1 led by Luis Majano.pdf
PDF
What's New with BoxLang Led by Brad Wood.pdf
PDF
Vector Databases and the BoxLangCFML Developer.pdf
PDF
Using cbSSO in a ColdBox App Led by Jacob Beers.pdf
PDF
Use JSON to Slash Your Database Performance.pdf
PDF
Portable CI wGitLab and Github led by Gavin Pickin.pdf
PDF
Tame the Mesh An intro to cross-platform tracing and troubleshooting.pdf
PDF
Supercharging CommandBox with Let's Encrypt.pdf
PDF
Spice up your site with cool animations using GSAP..pdf
PDF
Passkeys and cbSecurity Led by Eric Peterson.pdf
PDF
Legacy Code Nightmares , Hellscapes, and Lessons Learned.pdf
PDF
Integrating the OpenAI API in Your Coldfusion Apps.pdf
PDF
Hidden Gems in FusionReactor for BoxLang, ACF, and Lucee Users.pdf
PDF
Geting-started with BoxLang Led By Raymon Camden.pdf
PDF
From Zero to CRUD with ORM - Led by Annette Liskey.pdf
TheFutureIsDynamic-BoxLang witch Luis Majano.pdf
June Webinar: BoxLang-Dynamic-AWS-Lambda
BoxLang-Dynamic-AWS-Lambda by Luis Majano.pdf
What's-New-with-BoxLang-Brad Wood.pptx.pdf
Getting Started with BoxLang - CFCamp 2025.pdf
CFCamp2025 - Keynote Day 1 led by Luis Majano.pdf
What's New with BoxLang Led by Brad Wood.pdf
Vector Databases and the BoxLangCFML Developer.pdf
Using cbSSO in a ColdBox App Led by Jacob Beers.pdf
Use JSON to Slash Your Database Performance.pdf
Portable CI wGitLab and Github led by Gavin Pickin.pdf
Tame the Mesh An intro to cross-platform tracing and troubleshooting.pdf
Supercharging CommandBox with Let's Encrypt.pdf
Spice up your site with cool animations using GSAP..pdf
Passkeys and cbSecurity Led by Eric Peterson.pdf
Legacy Code Nightmares , Hellscapes, and Lessons Learned.pdf
Integrating the OpenAI API in Your Coldfusion Apps.pdf
Hidden Gems in FusionReactor for BoxLang, ACF, and Lucee Users.pdf
Geting-started with BoxLang Led By Raymon Camden.pdf
From Zero to CRUD with ORM - Led by Annette Liskey.pdf

Recently uploaded (20)

PDF
Unlocking AI with Model Context Protocol (MCP)
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Machine learning based COVID-19 study performance prediction
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
sap open course for s4hana steps from ECC to s4
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Approach and Philosophy of On baking technology
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
cuic standard and advanced reporting.pdf
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Unlocking AI with Model Context Protocol (MCP)
“AI and Expert System Decision Support & Business Intelligence Systems”
The AUB Centre for AI in Media Proposal.docx
Diabetes mellitus diagnosis method based random forest with bat algorithm
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
MYSQL Presentation for SQL database connectivity
Machine learning based COVID-19 study performance prediction
The Rise and Fall of 3GPP – Time for a Sabbatical?
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Advanced methodologies resolving dimensionality complications for autism neur...
sap open course for s4hana steps from ECC to s4
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Approach and Philosophy of On baking technology
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
cuic standard and advanced reporting.pdf
How UI/UX Design Impacts User Retention in Mobile Apps.pdf

Multi-platform Enterprise Messaging with RabbitMQ

  • 2. WHO AM I? • Luis Majano • Computer Engineer • Imported from El Salvador -----> • Architecture + Software Design • CEO of Ortus Solutions • Professional Open Source www.ortussolutions.com @ortussolutions @lmajano
  • 3. Why Messaging? What is Messaging? Different Implementations AMQP Protocol RabbitMQ Demo
  • 4. WHY MESSAGING • 3 Issues (There are more) • RPC • Monoliths • Integration + Scalability Remote Procedure Call
  • 5. TRADITIONAL RPC STYLE CALLS Obj Obj Obj
  • 7. • Blocks Requests • Tight coupling • Sender always knows about receiver • Receiver knows about sender • What if call errors out? • What if call hangs? PROBLEMS WITH RPC How can we decouple knowledge? How can we unblock?
  • 10. Scale 
 + 
 Integrate • Integrate many internal/external systems • Integrate many languages • Increase Decoupling • Work with X amount of servers • Notify X amount of servers of stuff • Be more reactive to exceptions • Federation • ….
  • 11. “Software is always bound to change”
  • 12. HOW DO WE MODERNIZE?
  • 13. Asynchronous Decouple instead of tight coupling Modularize Either with HMVC Frameworks or Microservices Scale and Integrate Systems, Languages,Technologies, External Resources SET SOME GOALS
  • 15. MICROSERVICES AN APPROACH TO DEVELOPING A SINGLE APPLICATION AS A SUITE OF SMALL SERVICES, EACH RUNNING IN ITS OWN PROCESS AND COMMUNICATING WITH LIGHTWEIGHT MECHANISMS. Martin Fowler
  • 17. Provide asynchronous communications Many protocols Many implementations Many design patterns Event-Driven Programming ENTERPRISE MESSAGING
  • 19. Messaging (EMB) Producer Consumer Consumer Consumer Messaging Bus - Broker Can be any system or language Can be any system or language Doesn’t care about consumers Asynchronous Does not get a response
  • 20. • Producers lack knowledge -> Decouple • Cross platforms-technologies -> Flexibility • Event Driven Programming -> Scalability • Queueing for later delivery • Asynchronous • Load balancing • Hulkyfied services
  • 22. AMQP - www.amqp.org • Advanced Message Queuing Protocol • != JMS • Standard binary protocol • Exchanges • Queuing • Routing • Reliable • Secure • Several Implementations RabbitMQ ActiveMQ Qpid StormMQ https://www.slideshare.net/HassanBOUMARSEL/rabbitmq-an-amqp-message-broker
  • 23. AMQP Messaging Broker Other Protocols: MQTT, HTTP, STOMP Erlang Extremely fast, reliable and secure Polyglot: c#, erlang, java, python, ruby, node, cfml, etc Its like a post box, post office and postman
  • 24. • Producer • Application that sends the message • Consumer • Application that receives the message • Queue • Buffer that stores the message • Message • Info sent from producer to consumer • Connection • TCP Connection between application and RabbitMQ • Channel • A virtual connection inside aTCP connection. 
 Multiplexing Concepts
  • 25. • Exchange • Receives messages and pushes them to queues depending on routing rules. Queues are bounds to exchanges • Binding • A link between a queue and an exchange • Routing Key • A key that the exchange looks to decide how to route the message. Like an address • Users • You can identify yourself to Rabbit with a username/password and have assigned permissions Concepts
  • 28. HOW IT WORKS? Producer Message (Body+Routing Key) Exchange (Bindings via Routing Key) Body = binary, json, anything stock.
 prices stock.
 run log.
 error cluster Queues are bound to exchanges with patterns Routing key = Bindings Queues
  • 30. Direct Messaging Can use a routing key
  • 31. Work Queues Can use a routing key
  • 34. • Direct + Workers • Routing key = queue name • No mapping or extra fluff just a passthrough • Topic • Binding pattern (routing key) is match against the queue name • Not full regex • Ex: log.*, log# • Not like JMSTopics, forget JMS, this is not JMS • Fanout • Sends messages to all queues bound to it • One message to multiple recipients • No load balancing, everybody gets the message • Similar to JMS EXCHANGETYPES
  • 35. LOAD BALANCING + ACK Worker Queue Consumer Consumer Consumer Messages are round-robin to each consumer ! Consumer need to ack
  • 37. Disclaimer: LIVE CODING,ANYTHING CAN HAPPEN Worker Queue CFML ConsumerStock Producer Java Consumer Groovy Consumer NodeJS Consumer HTML STOMP CLI, Package Manager, Embedded Servlet Container, REPL, More install lmajano/messaging-polyglot
  • 38. Q & A • RabbitMQ In Action Book • RabbitMQ In Depth Book • http://www.rabbitmq.com • http://tryrabbitmq.com • https://github.com/lmajano/messaging-polyglot • https://github.com/RabbitMQSimulator/RabbitMQSimulator • http://koo.fi/blog/2013/02/18/web-messaging-with-rabbitmq-web-stomp-and- sockjs/ • https://github.com/robharrop/presentations.git • https://www.slideshare.net/norbu09/rabbitmq-1731778?next_slideshow=1