Enterprise messaging

859 views
647 views

Published on

Published in: Software, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
859
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
28
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Enterprise messaging

  1. 1. Decouple & Scale with Enterprise Messaging
  2. 2. 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....
  3. 3. AGENDA • RPC Calls • What is Messaging • Implementations • AMQP Protocol • RabbitMQ • Nice Demo
  4. 4. RPC STYLE CALLS CFC CFC CFC
  5. 5. • 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
  6. 6. 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 Asynchronous Does not get a response
  7. 7. • 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
  8. 8. Usages and Patterns Work QueuesMessaging Publish/Subscribe Topics/Routing
  9. 9. Protocols JMS AMQP STOMP
  10. 10. AMQP - www.amqp.org • Advanced Message Queuing Protocol • != JMS • Standard binary protocol • Exchanges • Queuing • Routing • Reliable • Secure • Several Implementations RabbitMQ ActiveMQ Qpid StormMQ
  11. 11. • 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
  12. 12. 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
  13. 13. • 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 JMSTopics, forget JMS, this is not JMS • Fanout + More EXCHANGETYPES
  14. 14. LOAD BALANCING + ACK Worker Queue Consumer Consumer Consumer Messages are round-robin to each consumer Consumer need to ack
  15. 15. PUB-SUB EXAMPLE
  16. 16. DEMOTIME • Java Producer • Java Consumer • CFML Consumer • NodeJS Consumer • JavaScript Consumer • CFML Producer
  17. 17. 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

×