net::rabbitmq(::simple)

Post on 01-Dec-2014

1.762 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Net::RabbitMQ(::Simple)twitter: @thiagorondon - Thiago Rondon <thiago@aware.com.br>

Encontro Técnico - Rio Perl Mongers 2010

Agenda - soluções em filas.

Message

broker

MOM- message-oriented middleware -

Interoperabiliade e

Tarefas assíncronas.

wire-level

store and forward

Publish and Subscribe

Point to Point

Topic/Content

Based

shift vs @_

anycast

multiplexing

virtualhost

chaves vs

metadata

“heartbeat”

Persistência, Prioridades e Confiança.

Na teoria, o protocolo /wire-level/

AMQP

Publisher

Exchange

Bindings:Queues:

Consumer:

message

message

Broker{ [...]

Model

Session

Transport

Analogia utilizada na especificação do AMQP.

Uma mensagem AMQP é como uma mensagem

de e-mail.

Fila de mensagens é como um mailbox.

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

e-mails.

Exchange é como um MTA.

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

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

O binding é como se fosse uma entrada de

rota no MTA.

As diferenças.

Habilidade para criação em tempo de

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

Estudo de caso.

Topic Exchange.

Routing keys: sp.noticias, sp.tempo,

rio.noticias, rio.tempo.

Binding Keys:sp.# e rio.#

#.noticias e #.tempo

Estratégias para os consumidores.

Net::RabbitMQ

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!");

Resolvi, rabiscar um módulo para simplificar

aprender.

E também para saber um pouco mais sobre

Devel::Declare.

mqconnect();

exchange { name => ‘foo’ };

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

consume;

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

tx;

rollback;

commit;

Veja o diretório de

testes, para os exemplos.

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!’ };=

TODO

http://github.com/maluco

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

top related