CF Camp Notes: Multiply Like Rabbits

October 21, 2014

Multiply Like Rabbits - Asychronous Processing with ColdFusion and RabbitMQ
Markus Schneebeli

What is a Message Queue?
order a burger at McDonalds
to get a burger you need a cook
burger goes into the out-tray
to be given to the customer

producer -- cook
queue -- out tray
consumer -- the customer

can produce and send to multiple consumers

"exchange" -- the logic of the message queue
maybe the cook has to pick 1 of several trays to put the burger on

Rabbit MQ is a "Message Queue" product

Competitors --

ZeroMQ

ActiveMQ
-- largest # of installations, Apache product, can also store message via JDMC

ApolloMQ
latest release from Apache, different architecture, supports REST and JSON

HornetQ
jBoss implementation of Message Queue, supports JMS standards

just pick the one that matches your requirements

RabbitMQ
talks to any language - java, c++, node.js, .net, python, ruby, etc.
easily configurable
fast
multiple protocols

benefits --
really nice Management UI
open source
plugin system for creating your own logic
active community

the big players w/ RabbitMQ
Facebook - ajax loading system which goes thru message queue for the different "sections" of your FB page

WhatsApp
50 billion messages / day
almost 600,000 messages / second
(if you put that directly into a database, it'd surely blow up.)
2.8 million concurrent connections on the server

Google Suggestions
all the key typing isn't done by a "real request"
it's put into a message queue, and if possible, you get a request back via Message Queue (in milliseconds)