17
Decouple & Scale with Enterprise Messaging

Enterprise messaging

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Enterprise messaging

Decouple & Scale with Enterprise Messaging

Page 2: Enterprise messaging

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: Enterprise messaging

AGENDA

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

Page 4: Enterprise messaging

RPC STYLE CALLS

CFC CFC

CFC

Page 5: Enterprise messaging

• 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: Enterprise messaging

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: Enterprise messaging

• 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: Enterprise messaging

Usages and Patterns

Work QueuesMessaging

Publish/Subscribe Topics/Routing

Page 9: Enterprise messaging

Protocols

JMS AMQP STOMP

Page 10: Enterprise messaging

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: Enterprise messaging

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

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

Page 12: Enterprise messaging

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: Enterprise messaging

• 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: Enterprise messaging

LOAD BALANCING + ACK

Worker Queue

Consumer

Consumer

Consumer

Messages are round-robin

to each consumer

Consumer need to ack

Page 15: Enterprise messaging

PUB-SUB EXAMPLE

Page 16: Enterprise messaging

DEMO TIME

• Java Producer • Java Consumer • CFML Consumer • NodeJS Consumer • JavaScript Consumer • CFML Producer

Page 17: Enterprise messaging

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