geeky.week3.rabbitmq
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