Net::RabbitMQ(::Simple)

53
Net::RabbitMQ(::Simple) twitter: @thiagorondon - Thiago Rondon <[email protected] > Encontro Técnico - Rio Perl Mongers 2010

description

 

Transcript of Net::RabbitMQ(::Simple)

Page 1: Net::RabbitMQ(::Simple)

Net::RabbitMQ(::Simple)twitter: @thiagorondon - Thiago Rondon <[email protected]>

Encontro Técnico - Rio Perl Mongers 2010

Page 2: Net::RabbitMQ(::Simple)

Agenda - soluções em filas.

Page 4: Net::RabbitMQ(::Simple)

Message

broker

Page 5: Net::RabbitMQ(::Simple)

MOM- message-oriented middleware -

Page 6: Net::RabbitMQ(::Simple)

Interoperabiliade e

Tarefas assíncronas.

Page 7: Net::RabbitMQ(::Simple)

wire-level

Page 8: Net::RabbitMQ(::Simple)

store and forward

Page 9: Net::RabbitMQ(::Simple)

Publish and Subscribe

Page 10: Net::RabbitMQ(::Simple)

Point to Point

Page 11: Net::RabbitMQ(::Simple)

Topic/Content

Based

Page 12: Net::RabbitMQ(::Simple)

shift vs @_

Page 13: Net::RabbitMQ(::Simple)

anycast

Page 14: Net::RabbitMQ(::Simple)

multiplexing

Page 15: Net::RabbitMQ(::Simple)

virtualhost

Page 16: Net::RabbitMQ(::Simple)

chaves vs

metadata

Page 17: Net::RabbitMQ(::Simple)

“heartbeat”

Page 18: Net::RabbitMQ(::Simple)

Persistência, Prioridades e Confiança.

Page 19: Net::RabbitMQ(::Simple)

Na teoria, o protocolo /wire-level/

AMQP

Page 20: Net::RabbitMQ(::Simple)

Publisher

Exchange

Bindings:Queues:

Consumer:

message

message

Broker{ [...]

Page 21: Net::RabbitMQ(::Simple)

Model

Session

Transport

Page 22: Net::RabbitMQ(::Simple)

Analogia utilizada na especificação do AMQP.

Page 23: Net::RabbitMQ(::Simple)

Uma mensagem AMQP é como uma mensagem

de e-mail.

Page 24: Net::RabbitMQ(::Simple)

Fila de mensagens é como um mailbox.

Page 25: Net::RabbitMQ(::Simple)

Consumidor é como um leitor de e-mail, que pode buscar e apagar

e-mails.

Page 26: Net::RabbitMQ(::Simple)

Exchange é como um MTA.

Page 27: Net::RabbitMQ(::Simple)

Routing Key é como o To:, Cc: ou Bcc:

Page 28: Net::RabbitMQ(::Simple)

Cada instancia do Exchange é como se fosse um processo MTA “separado”

Page 29: Net::RabbitMQ(::Simple)

O binding é como se fosse uma entrada de

rota no MTA.

Page 30: Net::RabbitMQ(::Simple)

As diferenças.

Page 31: Net::RabbitMQ(::Simple)

Habilidade para criação em tempo de

execução, de filas, exchanges e rotas.

Page 32: Net::RabbitMQ(::Simple)

Estudo de caso.

Page 33: Net::RabbitMQ(::Simple)

Topic Exchange.

Page 34: Net::RabbitMQ(::Simple)

Routing keys: sp.noticias, sp.tempo,

rio.noticias, rio.tempo.

Page 35: Net::RabbitMQ(::Simple)

Binding Keys:sp.# e rio.#

#.noticias e #.tempo

Page 36: Net::RabbitMQ(::Simple)

Estratégias para os consumidores.

Page 38: Net::RabbitMQ(::Simple)

Net::RabbitMQ

Page 39: Net::RabbitMQ(::Simple)

use Net::RabbitMQ;my $mq = Net::RabbitMQ->new();$mq->connect("localhost", { user => "guest", password => "guest" });$mq->channel_open(1);$mq->publish(1, "queuename", "Hi there!");

Page 40: Net::RabbitMQ(::Simple)

Resolvi, rabiscar um módulo para simplificar

aprender.

Page 41: Net::RabbitMQ(::Simple)

E também para saber um pouco mais sobre

Devel::Declare.

Page 42: Net::RabbitMQ(::Simple)

mqconnect();

Page 43: Net::RabbitMQ(::Simple)

exchange { name => ‘foo’ };

Page 44: Net::RabbitMQ(::Simple)

publish { queue => ‘baz’, route => ‘route_baz’, message => ‘foo’ };

Page 45: Net::RabbitMQ(::Simple)

consume;

Page 46: Net::RabbitMQ(::Simple)

get { options => { routing_keys => ‘perl.#’; }};

Page 47: Net::RabbitMQ(::Simple)

tx;

Page 48: Net::RabbitMQ(::Simple)

rollback;

Page 49: Net::RabbitMQ(::Simple)

commit;

Page 50: Net::RabbitMQ(::Simple)

Veja o diretório de

testes, para os exemplos.

Page 51: Net::RabbitMQ(::Simple)

use Net::RabbitMQ;my $mq = Net::RabbitMQ->new();$mq->connect("localhost", { user => "guest", password => "guest" });$mq->channel_open(1);$mq->publish(1, "queuename", "Hi there!");

use Net::RabbitMQ::Simple;mqconnect;publish { queue => ‘queuename’,message => ‘Hi there!’ };=

Page 52: Net::RabbitMQ(::Simple)

TODO

Page 53: Net::RabbitMQ(::Simple)

http://github.com/maluco

http://search.cpan.org/dist/Net-RabbitMQ-Simple/