SlideShare a Scribd company logo
AMQP
Advanced Message Queueing Protocol
Caveats
Event Logging
Legacy Architecture & Problem
Event Logging
Client

Client

Server

MongoDB

Client
Connection Issues
80
Client

110
Client

Server

MongoDB

65

Client
Connection Issues
80
Client

110
Client

255
Server

MongoDB

65

Client
Server MIA
0

Client

0

0

Server

Client

MongoDB

0

Client
Network Segmentation
0

Client

0

Server

Client

MongoDB

0

Client
Total data loss
DATA LOSS?!
Why AMQP?
• Stable and mature	

• Designed for SX markets	

• Widely supported (good interop)	

• Modular, Fast & Flexible
AMQP Overview
AMQP

Service Model
Wire

Advanced Message Queueing Protocol
AMQP Overview
AMQP

AMQ Model

Wire
AMQP Overview
AMQP

AMQ Model

Server-side service model	

defined components	

rules for wiring

Wire
AMQP Overview
AMQP

AMQ Model

Wire

Network wire-level protocol	

command architecture	

connections, channels, etc
AMQ Model

AMQ Model
Exchange
Queues
Binding
AMQ Model
AMQ Model

Exchange

Queues

Binding
AMQ Model
Virtual Host

AMQ Model

Exchange

Queues

Binding
AMQ Model
Virtual Host

AMQ Model

Publisher

Exchange

Queues

Binding

Consumer
AMQ Model
Virtual Host

Exchange

Publisher

Queues

Binding

Consumer
AMQ Model
Virtual Host
Router
Message

Publisher

Exchange

Queues

Binding

Consumer
AMQ Model
Virtual Host
Router
Message

Publisher

Exchange

Queues

Binding

Consumer
AMQ Model
Virtual Host
Router
Message

Publisher

Exchange

?

Binding

Queues

Consumer
AMQ Model
Virtual Host
Router
Message

Publisher

Exchange

?

Binding

Queues

Consumer
AMQ Model
Virtual Host
Router
Message

Publisher

Exchange

Queues

Binding
Queue:
critical_error_queue	

Exchange:
errors_exchange	

Filter:	

*.error.critical

Consumer
AMQ Model
Virtual Host
Router
Message

Publisher

Exchange

Queues

Binding
Queue:
critical_error_queue	

Exchange:
errors_exchange	

Filter:	

*.error.critical

Consumer
Important notes
Publisher

‣ can create

exchanges and
queues

Exchange

‣ routes messages based on

criteria	

‣ doesn’t store messages	

‣ can inspect message
content	

‣ can be created at runtime
consumers

Queues

store messages	

named	

bound-able to exchange	

criteria	

can be created at
runtime by consumers
‣
‣
‣
‣
‣

Binding

‣ creates a relationship between

Consumer

‣ can create

queues and exchanges	

exchanges and
‣ contains criteria and properties	

 queues
‣ can be created at runtime by
consumers
The Exchange
Exchange
The Exchange
Exchange

Types	

Headers
System
Fanout
Topic
(routing algo)
The Exchange
Exchange

Types	

(routing algo)

Direct

Fanout

Topic

Headers

System
The Exchange
Exchange

Types	

(routing algo)

Direct

Fanout

Topic

Headers

System
Direct Type Exchange
Exchange	

‘events’
Direct Type Exchange
Message	


event.user.click

Message	


event.user.view

Message	


event.user.share

Exchange	

‘events’
Direct Type Exchange
Message	


event.user.click
user_click_queue

Message	


event.user.view

Message	


event.user.share

Exchange	

‘events’
Direct Type Exchange
Message	


event.user.click
user_click_queue

Message	


event.user.view

Exchange	

‘events’

Message	


event.user.share

Binding

➡Queue:
‣ user_click_queue
Direct Type Exchange
Message	


event.user.click
user_click_queue

Message	


event.user.view

Exchange	

‘events’

Message	


event.user.share

Binding

➡Queue:
‣ user_click_queue
➡Exchange:
‣ events
Direct Type Exchange
Message	


event.user.click
user_click_queue

Message	


event.user.view

Exchange	

‘events’

Message	


event.user.share

Binding

➡Queue:
‣ user_click_queue
➡Exchange:
‣ events 	

➡Routing Key:	

‣ event.user.click
Direct Type Exchange
Message	


PHP Script

event.user.click
user_click_queue

Message	


event.user.view

Exchange	

‘events’

PHP Script

Message	


PHP Script

event.user.share

Binding

➡Queue:
‣ user_click_queue
➡Exchange:
‣ events 	

➡Routing Key:	

‣ event.user.click
Direct Type Exchange
Message	


event.user.click
user_click_queue

Message	


event.user.view

Message	


Exchange	

‘events’
user_view_queue

event.user.share

user_share_queue
Yeah, so?
What if…
user_interaction_queue

Message	


event.user.click

Message	


event.user.view

Message	


event.user.share

Exchange	

‘events’

user_shares_queue
What if…
user_interaction_queue

Message	


event.user.click

Message	


event.user.view

Message	


event.user.share

Exchange	

‘events’

user_shares_queue
What if…
user_interaction_queue

Message	


event.user.click

Message	


event.user.view

Message	


event.user.share

Exchange	

‘events’

user_shares_queue
Topic Exchange
Message	


event.user.click

Message	


event.user.view

user_interaction_queue

Exchange	

‘events’

Message	


event.user.share

Binding
Topic Exchange
Message	


PHP Script

event.user.click

Message	


event.user.view

user_interaction_queue

Exchange	

‘events’

PHP Script

Message	


PHP Script

event.user.share

Binding

➡Queue:
‣ user_interaction_queue
➡Exchange:
‣ events 	

➡Routing Key:	

‣ event.user.*
Topic Exchange
user_interaction_queue

Message	


event.user.click

Message	


event.user.view

Message	


event.user.share

Message
Message

event.user.*

Exchange	

‘events’

event.user.share

user_shares_queue

Message
Can be done at runtime
Topic Exchange
user_interaction_queue

Message	


event.user.click

Message	


event.user.view

Message	


Message
Message

event.user.*

Exchange	

‘events’

event.user.share

user_shares_queue

event.user.share

Click vs Share Conversion?

Message
Topic Exchange
user_interaction_queue

Message	


event.user.click

Message	


event.user.view

Message	


Message
Message

event.user.*

Exchange	

‘events’

event.user.share

user_shares_queue

Message

event.user.share

event.user.share	

event.user.click
click_share_queue

Click vs Share Conversion?

Message
Message
Topic Exchange
user_interaction_queue

Message	


event.user.click

Message	


event.user.view

Message	


Message
Message

event.user.*

Exchange	

‘events’

event.user.share

user_shares_queue

Message

event.user.share

Message	


*.*.view

event.staff.view

live_view_queue

Staff vs user views?

Message
Message
I’m still pissed
New Event Logging
Explorations & Implementation
Revisiting Our Logging
Client

Client

Client

MongoDB
Event Logging Revised
Client
MQ

Client

MongoDB
MQ

Client
MQ
Event Logging Revised
Client
MQ

Client

MongoDB
MQ

Client
MQ
Event Logging Revised
Client
MQ

Client

MongoDB
MQ

Client
MQ
No data loss!
SRSLY?!
Event Logging Revised
80

Client
MQ

110

MQ

Client
MQ

65

Client
MQ

MongoDB
Event Logging Revised
80

Client
MQ

110

MQ

Client
MQ

65

Client
MQ

MongoDB
Event Logging Revised
80

Client
MQ

110

MQ

Client
MQ

65

Client

MQ
MQ

MongoDB
Event Logging Revised
80

Client
MQ

MQ
110

Client

MongoDB
MQ

MQ
65

Client
MQ
Remember Topic Exchange?
user_interaction_queue

Message	


event.user.click

Message	


event.user.view

Message	


Message
Message

event.user.*

Exchange	

‘events’

event.user.share

user_shares_queue

Message

event.user.share

Message	


event.staff.view

*.*.view
live_view_queue

Message
Message
Provides flexibility
80

MongoDB

Client
MQ

110

MQ

Client

Reporting	

SQL

MQ

65

Client

Notification
MQ
AMQP for phpMelb
Not Covered
•

durable	


•

auto-delete	


•

passive	


•

qos	


•

no-wait	


•

ack	


•

exclusive	


•

message recovery
A quick demo of AMQP
with RabbitMQ
Thank you
weekeat@peazie.com

More Related Content

PDF
Distributed messaging with AMQP
PDF
Introduction to AMQP Messaging with RabbitMQ
PDF
Messaging with RabbitMQ and AMQP
PPT
Amqp Basic
PDF
Messaging Standards and Systems - AMQP & RabbitMQ
PDF
Full Stack Bus with Javascript, RabbitMQ and Postal.js
PDF
Messaging with amqp and rabbitmq
PDF
An update from the RabbitMQ team - Michael Klishin
Distributed messaging with AMQP
Introduction to AMQP Messaging with RabbitMQ
Messaging with RabbitMQ and AMQP
Amqp Basic
Messaging Standards and Systems - AMQP & RabbitMQ
Full Stack Bus with Javascript, RabbitMQ and Postal.js
Messaging with amqp and rabbitmq
An update from the RabbitMQ team - Michael Klishin

What's hot (20)

PPT
Easy enterprise application integration with RabbitMQ and AMQP
PDF
The Future of Messaging: RabbitMQ and AMQP
PPT
Rabbit MQ introduction
ODP
Introduction To RabbitMQ
PPTX
The RabbitMQ Message Broker
PDF
AMQP with RabbitMQ
PPTX
What is RabbitMQ ?
PDF
Messaging Standards and Systems - AMQP & RabbitMQ
PPTX
Spring RabbitMQ
PDF
A walk-through of the design and architecture of RabbitMQ - Ayanda Dube
KEY
Real time system_performance_mon
PPTX
Message Broker System and RabbitMQ
PDF
Keynote: Idiomatic RabbitMQ - Gavin M Roy
KEY
RabbitMQ And Nanite
PPTX
Java Messaging with AMQP and RabbitMQ
PDF
What we've learned from running thousands of production RabbitMQ clusters - L...
PDF
Messaging in the Cloud - AMQP, RabbitMQ and Spring
PDF
XMPP & AMQP
PDF
RabbitMQ in PHP
PDF
Rabbitmq, amqp Intro - Messaging Patterns
Easy enterprise application integration with RabbitMQ and AMQP
The Future of Messaging: RabbitMQ and AMQP
Rabbit MQ introduction
Introduction To RabbitMQ
The RabbitMQ Message Broker
AMQP with RabbitMQ
What is RabbitMQ ?
Messaging Standards and Systems - AMQP & RabbitMQ
Spring RabbitMQ
A walk-through of the design and architecture of RabbitMQ - Ayanda Dube
Real time system_performance_mon
Message Broker System and RabbitMQ
Keynote: Idiomatic RabbitMQ - Gavin M Roy
RabbitMQ And Nanite
Java Messaging with AMQP and RabbitMQ
What we've learned from running thousands of production RabbitMQ clusters - L...
Messaging in the Cloud - AMQP, RabbitMQ and Spring
XMPP & AMQP
RabbitMQ in PHP
Rabbitmq, amqp Intro - Messaging Patterns
Ad

Similar to AMQP for phpMelb (20)

PPT
f2f-overview12.ppt
PPT
f2f-overview1-presentation about rabbitmq and middleware
PDF
Architecture | The Future of Messaging: RabbitMQ and AMQP | Eberhard Wolff
PPT
RabbitMQ Protocol Essentials - Introduction for beginners
 
PPTX
Discover the Capabilities of Windows Azure Service Bus to Power Agile Busines...
PPTX
High powered messaging with RabbitMQ
PDF
IBM MQ High Availability 2019
PDF
IBM IMPACT 2014 AMC-1866 Introduction to IBM Messaging Capabilities
PPTX
MQTT meets AMQP
PPTX
Spring RabbitMQ
PDF
AMQP.pdf
PDF
Designing IBM MQ deployments for the cloud generation
PDF
HHM-3540: The IBM MQ Light API: From Developer Laptop to Enterprise Data Cen...
PDF
[OSC2016] マイクロサービスを支える MQ を考える
PDF
Building scalable flexible messaging systems using qpid
PPTX
RabbitMq
KEY
High scale flavour
PDF
Messaging for IoT
PDF
f2f-overview12.ppt
f2f-overview1-presentation about rabbitmq and middleware
Architecture | The Future of Messaging: RabbitMQ and AMQP | Eberhard Wolff
RabbitMQ Protocol Essentials - Introduction for beginners
 
Discover the Capabilities of Windows Azure Service Bus to Power Agile Busines...
High powered messaging with RabbitMQ
IBM MQ High Availability 2019
IBM IMPACT 2014 AMC-1866 Introduction to IBM Messaging Capabilities
MQTT meets AMQP
Spring RabbitMQ
AMQP.pdf
Designing IBM MQ deployments for the cloud generation
HHM-3540: The IBM MQ Light API: From Developer Laptop to Enterprise Data Cen...
[OSC2016] マイクロサービスを支える MQ を考える
Building scalable flexible messaging systems using qpid
RabbitMq
High scale flavour
Messaging for IoT
Ad

More from Wee Keat Chin (7)

PDF
Git foundation
PDF
Deployment Automation - My journey at Peazie
PDF
Automating with CloudFormation
PDF
Getting Started with Arduino
PDF
Continuous delivery
PDF
RabbitMQ fairly-indepth
PPT
Getting agile
Git foundation
Deployment Automation - My journey at Peazie
Automating with CloudFormation
Getting Started with Arduino
Continuous delivery
RabbitMQ fairly-indepth
Getting agile

Recently uploaded (20)

PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
A Presentation on Artificial Intelligence
PPTX
Big Data Technologies - Introduction.pptx
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Approach and Philosophy of On baking technology
PDF
cuic standard and advanced reporting.pdf
PDF
Empathic Computing: Creating Shared Understanding
PDF
Modernizing your data center with Dell and AMD
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Mobile App Security Testing_ A Comprehensive Guide.pdf
A Presentation on Artificial Intelligence
Big Data Technologies - Introduction.pptx
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
The Rise and Fall of 3GPP – Time for a Sabbatical?
NewMind AI Weekly Chronicles - August'25 Week I
Digital-Transformation-Roadmap-for-Companies.pptx
MYSQL Presentation for SQL database connectivity
Approach and Philosophy of On baking technology
cuic standard and advanced reporting.pdf
Empathic Computing: Creating Shared Understanding
Modernizing your data center with Dell and AMD
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Unlocking AI with Model Context Protocol (MCP)
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
“AI and Expert System Decision Support & Business Intelligence Systems”

AMQP for phpMelb