+ All Categories
Home > Technology > CBDW2014 - Down the RabbitMQ hole with ColdFusion

CBDW2014 - Down the RabbitMQ hole with ColdFusion

Date post: 20-Jun-2015
Category:
Upload: ortus-solutions-corp
View: 297 times
Download: 1 times
Share this document with a friend
Description:
In this talk I will introduce attendees to the basics of messaging queues, their goals and applications from CFML. Messaging enables software applications to connect and scale. Thus, providing applications to connect to each other as components of a larger application, or to user devices and data. Messaging is asynchronous, and can decouple your software concerns with ease. However, messaging is much more than the traditional publish/subscribe patterns but also the ability to create work queues, routing and much more.
Popular Tags:
17
Down the RabittMQ Hole with ColdFusion
Transcript
Page 1: CBDW2014 - Down the RabbitMQ hole with ColdFusion

Down the RabittMQ Hole with ColdFusion

Page 2: CBDW2014 - Down the RabbitMQ hole with ColdFusion

WHO AM I?• Luis Majano - Computer Engineer

• Born in El Salvador ------------------>

• Architecture + Software Design

• CEO of Ortus Solutions

• Manager of the IECFUG (www.iecfug.com)

• Adobe Community Professional

• Creator of all things Box: ColdBox, ContentBox, WireBox....

Page 3: CBDW2014 - Down the RabbitMQ hole with ColdFusion

AGENDA

• RPC Calls • What is Messaging • Implementations • AMQP Protocol • RabbitMQ • Nice Demo

Page 4: CBDW2014 - Down the RabbitMQ hole with ColdFusion

RPC STYLE CALLS

CFC CFC

CFC

Page 5: CBDW2014 - Down the RabbitMQ hole with ColdFusion

• Blocks Request Usage • Even if you do them Asynchronous, messages only 1 receiver • Sender always knows about receiver • Receiver knows about sender • How can we decouple knowledge? • How can we apply messaging patterns to our apps?

PROBLEMS WITH RPC

Page 6: CBDW2014 - Down the RabbitMQ hole with ColdFusion

Messaging (EMS)Producer

Consumer Consumer Consumer

Messaging Bus

Can be any system or

language

Can be any system or

language

Doesn’t care about consumers

AsynchronousDoes not get a

response

Page 7: CBDW2014 - Down the RabbitMQ hole with ColdFusion

• Producers don’t care about consumers -> Decouple • Cross platforms-technologies-OS, you name it -> Flexibility • Event Driven Programming -> Scalability • Queueing for later delivery • Asynchronous • Load balancing • Hulkyfied services

BENEFITS OF MESSAGING

Page 8: CBDW2014 - Down the RabbitMQ hole with ColdFusion

Usages and Patterns

Work QueuesMessaging

Publish/Subscribe Topics/Routing

Page 9: CBDW2014 - Down the RabbitMQ hole with ColdFusion

Protocols

JMS AMQP STOMP

Page 10: CBDW2014 - Down the RabbitMQ hole with ColdFusion

AMQP - www.amqp.org

• Advanced Message Queuing Protocol • != JMS • Standard binary protocol • Exchanges • Queuing • Routing • Reliable • Secure • Several Implementations

RabbitMQ

ActiveMQ

Qpid

StormMQ

Page 11: CBDW2014 - Down the RabbitMQ hole with ColdFusion

• AMQP Messaging Broker • www.rabbitmq.com • Built on erlang like Couchbase NoSQL • Extremely fast, reliable and secure • Languages: c#, erlang, java, python, ruby, node, cfml • Simple concept

• Accepts and forwards messages • Its like a post box, post office and postman

Page 12: CBDW2014 - Down the RabbitMQ hole with ColdFusion

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

Page 13: CBDW2014 - Down the RabbitMQ hole with ColdFusion

• Direct

• Routing key = queue name • No mapping or extra fluff just a passthrough • Similar to JMS

• Topic

• Binding pattern (routing key) is match against the queue name • Not full regex • Ex: log.*, log# • Not like JMS Topics, forget JMS, this is not JMS

• Fanout + More

EXCHANGE TYPES

Page 14: CBDW2014 - Down the RabbitMQ hole with ColdFusion

LOAD BALANCING + ACK

Worker Queue

Consumer

Consumer

Consumer

Messages are round-robin

to each consumer

Consumer need to ack

Page 15: CBDW2014 - Down the RabbitMQ hole with ColdFusion

PUB-SUB EXAMPLE

Page 16: CBDW2014 - Down the RabbitMQ hole with ColdFusion

DEMO TIME

• Java Producer • Java Consumer • CFML Consumer • NodeJS Consumer • JavaScript + Stomp Consumer • CFML Producer

Page 17: CBDW2014 - Down the RabbitMQ hole with ColdFusion

Q & A

• RabbitMQ In Action Book • http://www.rabbitmq.com • http://tryrabbitmq.com/ • 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


Recommended