Transcript

RabbitMQ

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

GEEK ACADEMY 2013

RABBITMQ

GEEK ACADEMY 2013

MQ History

1985 1993

TIB IBM MQSeries RabbitMQ

2006

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

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

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

FLOWS

MessageProducer Exchange

QueueBinding Consumer

"lightweight connections that share a single TCP connection".

CHANNELS

What?

DEFAULT EXCHANGE

producer broker consumer

consumer

consumer

geeky2

geeky

1

geeky3

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());

DIRECT EXCHANGE

producer broker

consumer

consumer

geeky.jvm

geeky.groovy

geeky.jv

m

geeky.ja

va

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());

FANOUT EXCHANGE

producer broker consumer

consumer

consumer

Hello geeky

Hello

geeky

Hellogeeky

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());

TOPIC EXCHANGE

producer broker consumer

consumer

consumer

geeky.#

*.java.*

*.groovy.*

*.*.spring

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());

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]

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

GEEK ACADEMY 2013

THANK YOU FORYOUR TIME

GEEK ACADEMY 2013

top related