RabbitMQ

26
Jéferson Machado So#ware Design Social network informa0on http://twitter.com/jefersonm http://facebook.com/jefe.machado https://github.com/jefersonm/ http://slideshare.net/jefersonm

Transcript of RabbitMQ

Page 1: RabbitMQ

Jéferson Machado So#ware  Design  

Social  network  informa0on  

http://twitter.com/jefersonm http://facebook.com/jefe.machado

https://github.com/jefersonm/ http://slideshare.net/jefersonm

Page 2: RabbitMQ

WHAT IS THAT ?

Robust messaging for applications

Page 3: RabbitMQ

Written in:

Page 4: RabbitMQ
Page 5: RabbitMQ

LANGUAGES

•  JAVA / JVM – GROOVY / GRAILS – SCALA / LIFT – AKKA – PLAY! FRAMEWORK

•  RUBY •  PYTHON •  .NET •  PHP •  PERL •  C/C++ •  ERLANG •  LISP •  HASKELL

Page 6: RabbitMQ

HOW IT WORKS ?

Post man

Page 7: RabbitMQ

Producer  

Sent  message  

Consumer  

Receive  message  

Queue  

JARGON

Buffer  that  stores  messages  

Page 8: RabbitMQ

WORKER QUEUES

Page 9: RabbitMQ

worker.py   new_task.py  

Page 10: RabbitMQ

ROUND-ROBIN DISPATCHING

Consumer  1   Consumer  2  

Page 11: RabbitMQ

MESSAGE ACKNOWLEDGMENT

Consumer  1   Consumer  2  

Ack  

Page 12: RabbitMQ

MESSAGE ACKNOWLEDGMENT

Consumer  1   Consumer  2  

Page 13: RabbitMQ

MESSAGE DURABILITY

Page 14: RabbitMQ

FAIR DISPATCH

Consumer  1   Consumer  2  

prefetch=1   prefetch=1  

Page 15: RabbitMQ

PUBLISH / SUBSCRIBLE

Page 16: RabbitMQ

EXCHANGES

Wrong              

Right                

Page 17: RabbitMQ

EXCHANGES

TYPES:  

•  Direct  •  Topic  •  Fanout  •  Header  

Default  exchange  

Page 18: RabbitMQ

BINDINGS

Page 19: RabbitMQ

TEMPORARY QUEUES

amq.gen-­‐U0srCoW8TsaXjNh73pnVAw==  

With  name:  

Random  name:  

Page 20: RabbitMQ

ROUNTING

Exchange:  direct  

Page 21: RabbitMQ

TOPICS

Exchange:  topic  

Message  =  quick.orange.rabbit  

Message  =  quick.orange.fox  

Message  =  lazy.brown.fox  

Q1,  Q2  

Q1  

Q2  

Page 22: RabbitMQ

TOPIC IS MUCH POWERFUL!!!

Message  =  #  

Message  =  no  “#”  (hash)  and  “*”  (star)      

fanout  

direct  

Page 23: RabbitMQ

PLUGINS

Page 24: RabbitMQ

PLUGINS

Page 25: RabbitMQ

REFERENCES

•  http://www.rabbitmq.com/

•  https://github.com/jefersonm/sandbox/tree/gh-pages/python/rabbitmq

Page 26: RabbitMQ

Jéferson Machado So#ware  Design  

Social  network  informa0on  

http://twitter.com/jefersonm http://facebook.com/jefe.machado

https://github.com/jefersonm/ http://slideshare.net/jefersonm