+ All Categories
Home > Technology > Messaging with amqp and rabbitmq

Messaging with amqp and rabbitmq

Date post: 02-Jul-2015
Category:
Upload: selasie-hanson
View: 465 times
Download: 2 times
Share this document with a friend
Description:
How to implement simple pub sub systems with rabbitmq
27
MESSAGING WITH AMQP AND RABBITMQ
Transcript
Page 1: Messaging with amqp and rabbitmq

MESSAGING WITH AMQP AND RABBITMQ

Page 2: Messaging with amqp and rabbitmq

What is AMQP?AMQP (Advanced Message Queuing Protocol) is a networking protocol that enables conforming client applications to communicate with conforming messaging middleware brokers.

Page 3: Messaging with amqp and rabbitmq

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).

Page 4: Messaging with amqp and rabbitmq

EXAMPLE OF BROKERS

• RabbitMQ (by VMWARE)!• Microsoft's Windows Azure

Service Bus!• Red Hat Enterprise MRG!• StormMQ

Page 5: Messaging with amqp and rabbitmq

Lorem Ipsum Dolor

RABBITMQ Open Source message broker / queueing system written in Erlang implementing AMQP

Page 6: Messaging with amqp and rabbitmq

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

Page 7: Messaging with amqp and rabbitmq
Page 8: Messaging with amqp and rabbitmq

INDUSTRIES Telecommunications, Defense, Manufacturing, Internet and Cloud Computing

Page 9: Messaging with amqp and rabbitmq

Installing RABBitMQ

• MAC OSX - brew install rabbitmq !

• Windows - download the exe

Page 10: Messaging with amqp and rabbitmq

Running It rabbitmq-server

Page 11: Messaging with amqp and rabbitmq

Enabling the admin console

• rabbitmq-plugins enable rabbitmq_management!

!• http://http://localhost:

15672/

Page 12: Messaging with amqp and rabbitmq

How to talk to RABBITMQ

An AMQP Client. Available in most languages.

Page 13: Messaging with amqp and rabbitmq

Ruby clients • Bunny!• Ruby AMQP Gem

Page 14: Messaging with amqp and rabbitmq

INSTALLING BUNNY

• gem install bunny !• add to gem file -> gem

‘bunny’

Page 15: Messaging with amqp and rabbitmq

Lorem Ipsum Dolor

AMQP-MODEL• messages can be anything,!plain text, json, bytes, etc.!• Publisher and Consumer

are typically decoupled in big apps

Page 16: Messaging with amqp and rabbitmq

Exchanges and Exchange Types

• Direct exchange - specific routing key!

• Fanout exchange - braodcast!• Topic exchange - regex style

routing key!• Headers exchange

Page 17: Messaging with amqp and rabbitmq

DIRECT EXCHANGE

Page 18: Messaging with amqp and rabbitmq

Lorem Ipsum Dolor

DIRECT EXCHANGE 2

Page 19: Messaging with amqp and rabbitmq

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

Page 20: Messaging with amqp and rabbitmq

Lorem Ipsum Dolor

TOPIC EXCHANGE

• delimeter is dots!• * = 1!• # = anything

Page 21: Messaging with amqp and rabbitmq

USING BUNNYrequire “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

Page 22: Messaging with amqp and rabbitmq

DEMOcode: https://github.com/selasiehanson/rabbitmq_presentaion_code.git

Page 23: Messaging with amqp and rabbitmq

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"

Page 24: Messaging with amqp and rabbitmq

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”

Page 25: Messaging with amqp and rabbitmq

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"

Page 26: Messaging with amqp and rabbitmq

THE END

Page 27: Messaging with amqp and rabbitmq

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


Recommended