Integrating RabbitMQ with PHP
-
Upload
alvaro-videla -
Category
Technology
-
view
33.494 -
download
1
description
Transcript of Integrating RabbitMQ with PHP
![Page 1: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/1.jpg)
Integrating RabbitMQ with PHP
Álvaro Videla
June 2010 - IPC Spring Edition - Berlin
Wednesday, June 2, 2010
![Page 2: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/2.jpg)
About Me
• Lead Developer at TheNetCircle.com
• Writing “RabbitMQ in Action” for Manning
• Twitter: @old_sound
• Blog: http://obvioushints.blogspot.com/
Wednesday, June 2, 2010
![Page 3: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/3.jpg)
The Interoperability
Problem
Wednesday, June 2, 2010
![Page 4: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/4.jpg)
The Problem
MoviePublisher
Wednesday, June 2, 2010
![Page 5: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/5.jpg)
The Problem
NewMovie
MoviePublisher
Wednesday, June 2, 2010
![Page 6: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/6.jpg)
The ProblemWebService
XMLJava
NewMovie
MoviePublisher
Wednesday, June 2, 2010
![Page 7: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/7.jpg)
The ProblemWebService
XML
Image ThumbnailGenerator
C++
Java
NewMovie
MoviePublisher
Wednesday, June 2, 2010
![Page 8: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/8.jpg)
The ProblemWebService
XML
Image ThumbnailGenerator
PHP CacheGenerator
C++
PHP
Java
NewMovie
MoviePublisher
Wednesday, June 2, 2010
![Page 9: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/9.jpg)
The ProblemWebService
XML
Image ThumbnailGenerator
PHP CacheGenerator
StaticHTML
Publisher
C++
PHP
PHP
Java
NewMovie
MoviePublisher
Wednesday, June 2, 2010
![Page 10: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/10.jpg)
The ProblemWebService
XML
Image ThumbnailGenerator
PHP CacheGenerator
StaticHTML
Publisher
C++
PHP
PHP
Java
TrailersGenerator
C++
NewMovie
MoviePublisher
Wednesday, June 2, 2010
![Page 11: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/11.jpg)
SYSTEMSThe ProblemWebService
XML
Image ThumbnailGenerator
PHP CacheGenerator
TrailersGenerator
StaticHTML
Publisher
Wednesday, June 2, 2010
![Page 12: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/12.jpg)
SYSTEMSThe ProblemWebService
XML
Image ThumbnailGenerator
PHP CacheGenerator
TrailersGenerator
StaticHTML
Publisher
Written In Different Languages
Wednesday, June 2, 2010
![Page 13: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/13.jpg)
SYSTEMSThe ProblemWebService
XML
Image ThumbnailGenerator
PHP CacheGenerator
TrailersGenerator
StaticHTML
Publisher
Written In Different Languages
Different Operating Systems
Wednesday, June 2, 2010
![Page 14: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/14.jpg)
SYSTEMSThe ProblemWebService
XML
Image ThumbnailGenerator
PHP CacheGenerator
TrailersGenerator
StaticHTML
Publisher
Written In Different Languages
Different Operating Systems
Written By Different People
Wednesday, June 2, 2010
![Page 15: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/15.jpg)
SYSTEMSThe ProblemWebService
XML
Image ThumbnailGenerator
PHP CacheGenerator
TrailersGenerator
StaticHTML
Publisher
Written In Different Languages
Different Operating Systems
Written By Different People
They Need To Share Information
Wednesday, June 2, 2010
![Page 16: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/16.jpg)
SYSTEMSThe ProblemWebService
XML
Image ThumbnailGenerator
PHP CacheGenerator
TrailersGenerator
StaticHTML
Publisher
Written In Different Languages
Different Operating Systems
Written By Different People
They Need To Share Information
They Need Real Time Data
Wednesday, June 2, 2010
![Page 17: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/17.jpg)
SYSTEMSThe ProblemWebService
XML
Image ThumbnailGenerator
PHP CacheGenerator
TrailersGenerator
StaticHTML
Publisher
Written In Different Languages
Different Operating Systems
Written By Different People
They Need To Share Information
They Need Real Time Data
They Need To Scale
Wednesday, June 2, 2010
![Page 18: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/18.jpg)
Is There a Solution?
Wednesday, June 2, 2010
![Page 19: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/19.jpg)
AMQPand
RabbitMQ
Wednesday, June 2, 2010
![Page 20: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/20.jpg)
AMQP
• Advanced Message Queuing Protocol
• Suits Interoperability
• Completely Open Protocol
• Binary Protocol
• AMQP Model
• AMQP Wire Format
Wednesday, June 2, 2010
![Page 21: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/21.jpg)
AMQP Model
• Exchanges
• Message Queues
• Bindings
• Rules for binding them
Wednesday, June 2, 2010
![Page 22: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/22.jpg)
AMQP Wire Protocol
• Functional Layer
• Transport Layer
Wednesday, June 2, 2010
![Page 23: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/23.jpg)
Message Flow
http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.0/html/Messaging_Tutorial/chap-Messaging_Tutorial-Initial_Concepts.html
Wednesday, June 2, 2010
![Page 24: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/24.jpg)
Exchange Types
• Fanout
• Direct
• Topic
Wednesday, June 2, 2010
![Page 25: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/25.jpg)
Default Exchanges
• amqp.fanout
• amqp.direct
• amqp.topic
Wednesday, June 2, 2010
![Page 26: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/26.jpg)
http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.0/html/Messaging_Tutorial/sect-Messaging_Tutorial-Initial_Concepts-Fanout_Exchange.html
Wednesday, June 2, 2010
![Page 27: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/27.jpg)
http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.0/html/Messaging_Tutorial/sect-Messaging_Tutorial-Initial_Concepts-Direct_Exchange.html
Wednesday, June 2, 2010
![Page 28: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/28.jpg)
http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.0/html/Messaging_Tutorial/sect-Messaging_Tutorial-Initial_Concepts-Topic_Exchange.html
Wednesday, June 2, 2010
![Page 29: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/29.jpg)
Sample usage
Wednesday, June 2, 2010
![Page 30: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/30.jpg)
Sample Usage II
Wednesday, June 2, 2010
![Page 31: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/31.jpg)
Other Advantages
• Fire and Forget
• Stop/Start consumers safely (no need for last processed id)
• No need for Cronjobs locks
• Load Distribution
• Transactions
Wednesday, June 2, 2010
![Page 32: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/32.jpg)
RabbitMQ
Wednesday, June 2, 2010
![Page 33: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/33.jpg)
RabbitMQ
• Enterprise Messaging System
• Open Source MPL
• Written in Erlang/OTP
• Commercial Support
Wednesday, June 2, 2010
![Page 34: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/34.jpg)
Features
• Reliable and High Scalable
• Easy To install
• Easy To Cluster
• Runs on: Windows, Solaris, Linux, OSX
• AMQP 0.8
Wednesday, June 2, 2010
![Page 35: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/35.jpg)
Client Libraries
• Java
• .NET/C#
• Erlang
• Ruby, Python, PHP, Perl, AS3, Lisp, Scala
Wednesday, June 2, 2010
![Page 36: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/36.jpg)
Docs/Support
• http://www.rabbitmq.com/documentation.html
• http://dev.rabbitmq.com/wiki/
• #rabbitmq at irc.freenode.net
• http://www.rabbitmq.com/email-archive.html
Wednesday, June 2, 2010
![Page 37: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/37.jpg)
Our Setup:
Publishers - 28 PHP Frontend Machines
2 PHP Machinesrunning 24 consumers each
Wednesday, June 2, 2010
![Page 38: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/38.jpg)
Our Setup
• Deployed in mid 2009
• Reduced site SPOF
• 500.000+ messages routed a day (and increasing)
• Very easy to install/deploy
Wednesday, June 2, 2010
![Page 39: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/39.jpg)
Easy To Install?
Wednesday, June 2, 2010
![Page 40: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/40.jpg)
Easy To Install?
http://gist.github.com/334219
Wednesday, June 2, 2010
![Page 41: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/41.jpg)
PHP Integration
• http://code.google.com/p/php-amqplib/
• http://code.google.com/p/php-amqp/
• http://code.google.com/p/php-rabbit/
Wednesday, June 2, 2010
![Page 42: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/42.jpg)
Show me the code!
Wednesday, June 2, 2010
![Page 43: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/43.jpg)
RabbitMQ “Hello World!”
Wednesday, June 2, 2010
![Page 44: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/44.jpg)
AMQP Producer
Wednesday, June 2, 2010
![Page 45: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/45.jpg)
AMQP Producer
Wednesday, June 2, 2010
![Page 46: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/46.jpg)
AMQP Producer
Wednesday, June 2, 2010
![Page 47: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/47.jpg)
AMQP Producer
Wednesday, June 2, 2010
![Page 48: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/48.jpg)
AMQP Producer
Wednesday, June 2, 2010
![Page 49: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/49.jpg)
AMQP Consumer
Wednesday, June 2, 2010
![Page 50: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/50.jpg)
AMQP Consumer
Wednesday, June 2, 2010
![Page 51: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/51.jpg)
AMQP Consumer
Wednesday, June 2, 2010
![Page 52: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/52.jpg)
AMQP Consumer
Wednesday, June 2, 2010
![Page 53: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/53.jpg)
AMQP Consumer
Wednesday, June 2, 2010
![Page 54: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/54.jpg)
AMQP Consumer
Wednesday, June 2, 2010
![Page 55: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/55.jpg)
AMQP Consumer
Wednesday, June 2, 2010
![Page 56: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/56.jpg)
RabbitMQ RPC Example
Wednesday, June 2, 2010
![Page 57: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/57.jpg)
RPC Client
Wednesday, June 2, 2010
![Page 58: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/58.jpg)
RPC Client
Wednesday, June 2, 2010
![Page 59: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/59.jpg)
RPC Client
Wednesday, June 2, 2010
![Page 60: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/60.jpg)
RPC Client
Wednesday, June 2, 2010
![Page 61: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/61.jpg)
RPC Client
Wednesday, June 2, 2010
![Page 62: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/62.jpg)
RPC Server
Wednesday, June 2, 2010
![Page 63: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/63.jpg)
RPC Server
Wednesday, June 2, 2010
![Page 64: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/64.jpg)
RPC Server
Wednesday, June 2, 2010
![Page 65: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/65.jpg)
RPC Server
Wednesday, June 2, 2010
![Page 66: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/66.jpg)
RPC Server
Wednesday, June 2, 2010
![Page 67: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/67.jpg)
RPC Server
Wednesday, June 2, 2010
![Page 68: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/68.jpg)
RPC Server
Wednesday, June 2, 2010
![Page 69: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/69.jpg)
Resources:
• http://www.rabbitmq.com/
• https://www.amqp.org/confluence/display/AMQP/About+AMQP
• http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.0/html/Messaging_Tutorial/index.html
• http://wso2.org/library/articles/using-axis2-c-amqp-transport-part-i
• http://www.skaag.net/2010/03/12/rabbitmq-for-beginners/
• http://github.com/bkw/php-amqp
Wednesday, June 2, 2010
![Page 70: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/70.jpg)
Questions?
Wednesday, June 2, 2010
![Page 71: Integrating RabbitMQ with PHP](https://reader033.fdocuments.net/reader033/viewer/2022052213/55510a61b4c90572478b5516/html5/thumbnails/71.jpg)
Thanks!Alvaro Videla
http://twitter.com/old_sound
http://www.slideshare.net/old_sound
Wednesday, June 2, 2010