Top Banner
RabbitMQ 3th WEEK SATURDAY, JULY 06, 2013 – SUNDAY, JULY 07, 2013 GEEK ACADEMY 2013
20
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Geeky.week3.rabbitmq

RabbitMQ

3th WEEKSATURDAY, JULY 06, 2013 – SUNDAY, JULY 07, 2013

GEEK ACADEMY 2013

Page 2: Geeky.week3.rabbitmq

RABBITMQ

GEEK ACADEMY 2013

Page 3: Geeky.week3.rabbitmq

MQ History

1985 1993

TIB IBM MQSeries RabbitMQ

2006

Page 4: Geeky.week3.rabbitmq

A

B

C

D

E

Consumers

Producers

Broker

Exchanges

Queues

F

G

H

I

J

Bindings

Channel

Direct Exchange

Fanout Exchange

Topic Exchange

KEY WORDS

Page 5: Geeky.week3.rabbitmq

01. EXCHANGESExchanges are where producers publish their messages.

02. QUEUESQueues are where the messages end up and are received by consumers.

03. BINDINDSBindings are how the messages get routed from the exchange to particular queues

AMQP ELEMENTS

Page 6: Geeky.week3.rabbitmq

CONSUMERS AND PRODUCERS

10%

100%

10%

10%10%

10%

10%

NOT ABOUT ECONOMICS

AM LP CM KM YH R M HT

Producers create messages and publish (send) them to a broker server. Then the broker will determine who(consumers) should get a copy of messages.

Message = Payload + Label

Page 7: Geeky.week3.rabbitmq

FLOWS

MessageProducer Exchange

QueueBinding Consumer

Page 8: Geeky.week3.rabbitmq

"lightweight connections that share a single TCP connection".

CHANNELS

What?

Page 9: Geeky.week3.rabbitmq

DEFAULT EXCHANGE

producer broker consumer

consumer

consumer

geeky2

geeky

1

geeky3

Page 10: Geeky.week3.rabbitmq

Demo

ConnectionFactory factory = new ConnectionFactory();factory.setHost(RABBITMQ_HOST);Connection connection = factory.newConnection();Channel channel = connection.createChannel();boolean durable = true;channel.queueDeclare(queue, durable, false, isAutoDelete, null);

Producer:o channel.basicPublish( "", queue, null, message.getBytes());

Consumer:o QueueingConsumer consumer = new QueueingConsumer(channel);o channel.basicConsume(queue, autoAck, consumer);o QueueingConsumer.Delivery delivery = consumer.nextDelivery();o String message = new String(delivery.getBody());

Page 11: Geeky.week3.rabbitmq

DIRECT EXCHANGE

producer broker

consumer

consumer

geeky.jvm

geeky.groovy

geeky.jv

m

geeky.ja

va

Page 12: Geeky.week3.rabbitmq

Demo

ConnectionFactory factory = new ConnectionFactory();factory.setHost(RABBITMQ_HOST);Connection connection = factory.newConnection();Channel channel = connection.createChannel();channel.exchangeDeclare(EXCHANGE_NAME, "direct");

Producer:o channel.basicPublish( exchangeName, serevity, null, message.getBytes());

Consumer:o channel.queueBind(queueName, EXCHANGE_NAME, severity);o QueueingConsumer consumer = new QueueingConsumer(channel);o channel.basicConsume(queue, autoAck, consumer);o QueueingConsumer.Delivery delivery = consumer.nextDelivery();o String message = new String(delivery.getBody());

Page 13: Geeky.week3.rabbitmq

FANOUT EXCHANGE

producer broker consumer

consumer

consumer

Hello geeky

Hello

geeky

Hellogeeky

Page 14: Geeky.week3.rabbitmq

Demo

ConnectionFactory factory = new ConnectionFactory();factory.setHost(RABBITMQ_HOST);Connection connection = factory.newConnection();Channel channel = connection.createChannel();channel.exchangeDeclare(EXCHANGE_NAME, "fanout");

Producer:o channel.basicPublish( EXCHANGE_NAME, "", null, message.getBytes());

Consumer:o String queueName = channel.queueDeclare().getQueue();o channel.queueBind(queueName, EXCHANGE_NAME, "");o QueueingConsumer consumer = new QueueingConsumer(channel);o channel.basicConsume(queue, isAck, consumer);o QueueingConsumer.Delivery delivery = consumer.nextDelivery();o String message = new String(delivery.getBody());

Page 15: Geeky.week3.rabbitmq

TOPIC EXCHANGE

producer broker consumer

consumer

consumer

geeky.#

*.java.*

*.groovy.*

*.*.spring

Page 16: Geeky.week3.rabbitmq

Demo

ConnectionFactory factory = new ConnectionFactory();factory.setHost(RABBITMQ_HOST);Connection connection = factory.newConnection();Channel channel = connection.createChannel();boolean durable = true;channel.exchangeDeclare(EXCHANGE_NAME, "topic");

Producer:o channel.basicPublish( EXCHANGE_NAME, routingKey, null,

message.getBytes());

Consumer:o String queueName = channel.queueDeclare().getQueue();o channel.queueBind(queueName, EXCHANGE_NAME, bindingKey);o QueueingConsumer consumer = new QueueingConsumer(channel);o channel.basicConsume(queue, isAck, consumer);o QueueingConsumer.Delivery delivery = consumer.nextDelivery();o String message = new String(delivery.getBody());

Page 17: Geeky.week3.rabbitmq

Rabbitmqctl

o rabbitmqctl starto rabbitmqctl stopo rabbitmqctl list_queueso rabbitmqctl list_exchangeso rabbitmqctl list_bindingso rabbitmqctl list_userso rabbitmqctl add_user [username] [password]o rabbitmqctl delete_user [username]o rabbitmqctl changepassword [username] [new password]

Page 18: Geeky.week3.rabbitmq

01. http://www.springsource.org/spring-amqp

03.http://www.rabbitmq.com

04.http://hg.rabbitmq.com/rabbitmq-java-client/

READ MORE...

02.https://github.com/SpringSource/spring-amqp

05.https://github.com/up1/geeky_week3_demo

Page 19: Geeky.week3.rabbitmq

GEEK ACADEMY 2013

Page 20: Geeky.week3.rabbitmq

THANK YOU FORYOUR TIME

GEEK ACADEMY 2013