Your SlideShare is downloading. ×
Messaging with amqp and rabbitmq
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Messaging with amqp and rabbitmq

288
views

Published on

How to implement simple pub sub systems with rabbitmq

How to implement simple pub sub systems with rabbitmq

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
288
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. MESSAGING WITH AMQP AND RABBITMQ
  • 2. What is AMQP? AMQP (Advanced Message Queuing Protocol) is a networking protocol that enables conforming client applications to communicate with conforming messaging middleware brokers.
  • 3. WHAT ARE BROKERS Messaging brokers receive messages from publishers (applications that publish them, also known as producers) and route them to consumers (applications that process them).
  • 4. EXAMPLE OF BROKERS • RabbitMQ (by VMWARE)! • Microsoft's Windows Azure Service Bus! • Red Hat Enterprise MRG! • StormMQ
  • 5. Lorem Ipsum Dolor RABBITMQ Open Source message broker / queueing system written in Erlang implementing AMQP
  • 6. Who Uses AMQP • JPMorgan - 1 billion AMQP messages per day; used in dozens of mission critical systems worldwide! • VMware - Makes extensive use of RabbitMQ in its virtualization products and cloud service! • Google! • UIDAI, Government of India - the largest online identity project in the world aiming to provide each of India's 1.2 billion residents with a unique identity number! • AT&T, Smith Electric Vehicles, Mozilla, RED HAT cloud services
  • 7. INDUSTRIES Telecommunications, Defense, Manufacturing, Internet and Cloud Computing
  • 8. Installing RABBitMQ • MAC OSX - brew install rabbitmq ! • Windows - download the exe
  • 9. Running It rabbitmq-server
  • 10. Enabling the admin console • rabbitmq-plugins enable rabbitmq_management! ! • http://http://localhost: 15672/
  • 11. How to talk to RABBITMQ An AMQP Client. Available in most languages.
  • 12. Ruby clients • Bunny! • Ruby AMQP Gem
  • 13. INSTALLING BUNNY • gem install bunny ! • add to gem file -> gem ‘bunny’
  • 14. Lorem Ipsum Dolor AMQP-MODEL • messages can be anything,! plain text, json, bytes, etc.! • Publisher and Consumer are typically decoupled in big apps
  • 15. Exchanges and Exchange Types • Direct exchange - specific routing key! • Fanout exchange - braodcast! • Topic exchange - regex style routing key! • Headers exchange
  • 16. DIRECT EXCHANGE
  • 17. Lorem Ipsum Dolor DIRECT EXCHANGE 2
  • 18. Lorem Ipsum Dolor FAN-OUT • leaderboard updates or other global events! • Sport news sites can use score updates to mobile clients in near real-time! • Group chats can distribute messages between participants
  • 19. Lorem Ipsum Dolor TOPIC EXCHANGE • delimeter is dots! • * = 1! • # = anything
  • 20. USING BUNNY require “bunny”! #connect to rabbitmq! conn = Bunny.new! conn.start! #create channel! channel = conn.create_channel! #create / subscribe to a queue! queue = ch.queue(“hello”)! exchange = ch.default_exchange! #bind queue to an exchange! queue.bind(exchange, :routing_key => severity) exchange.publish("Hello World!", :routing_key => queue.name) queue.subscribe(:block => true) do | delivery_info, properties, body|! puts " [x] Received #{body}"! ! # cancel the consumer to exit! delivery_info.consumer.cancel! end
  • 21. DEMO code: https://github.com/selasiehanson/rabbitmq_presentaion_code.git
  • 22. FANOUT ❖ cd pubsub! ❖ ruby receive_logs.rb > logs_from_rabbit.log! ❖ ruby receive_logs.rb! ❖ ruby emit_log.rb! ❖ ruby emit_log.rb "Hello my peeps"
  • 23. DIRECT (3 receivers) ❖ cd ../routing/! ❖ ruby receive_logs_direct.rb warning error > logs_from_rabbit.log! ❖ ruby receive_logs_direct.rb info warning error! ❖ ruby receive_logs_direct.rb info warning! ❖ ruby emit_log_direct.rb error “Message 1”! ❖ ruby emit_log_direct.rb warning “Message 2”
  • 24. TOPIC ❖ cd ../topic/! ❖ ruby receive_logs_topic.rb "#"! ❖ ruby receive_logs_topic.rb "kern.*"! ❖ ruby receive_logs_topic.rb "*.critical"! ❖ ruby receive_logs_topic.rb "kern.*" "*.critical"! ❖ ruby emit_log_topic.rb "kern.critical" "A critical kernel error"
  • 25. THE END
  • 26. RESOURCES ❖ http://www.amqp.org/! ❖ http://www.rabbitmq.com/! ❖ http://www.rabbitmq.com/getstarted.html! ❖ http://www.rabbitmq.com/tutorials/amqp-concepts.html! ❖ http://rubybunny.info/! ❖ http://rubybunny.info/articles/getting_started.html! ❖ read the bunny docs! ❖ http://www.rubyinside.com/rabbitmq-a-fast-reliable-queuing-option-for- rubyists-1681.html