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



       Encontro Técnico - Rio Perl...
Agenda - soluções em
       filas.
http://www.flickr.com/photos/btsunami/1204911091/
Message


broker
MOM
- message-oriented middleware -
Interoperabiliade e
Tarefas   assíncronas.
wire-level
store
and forward
and
Publish
  Subscribe
Pointto
  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                message




         {
             Exchange
Broker       Bindings:    [...]
             Queues:...
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.
http://www.flickr.com/photos/21569450@N06/3299124233/
Net::RabbitMQ
use Net::RabbitMQ;
my $mq = Net::RabbitMQ->new();
$mq->connect("localhost", { user =>

 "guest", password => "guest" });
$...
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::Simple;
mqconnect;
publish { queue => ‘queuename’,
message => ‘Hi there!’ };




                =
use ...
TODO
http://github.com/maluco

http://search.cpan.org/dist/Net-
       RabbitMQ-Simple/
Upcoming SlideShare
Loading in …5
×

Net::RabbitMQ(::Simple)

1,670 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,670
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
21
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Net::RabbitMQ(::Simple)

  1. 1. Net::RabbitMQ(::Simple) twitter: @thiagorondon - Thiago Rondon <thiago@aware.com.br> Encontro Técnico - Rio Perl Mongers 2010
  2. 2. Agenda - soluções em filas.
  3. 3. http://www.flickr.com/photos/btsunami/1204911091/
  4. 4. Message broker
  5. 5. MOM - message-oriented middleware -
  6. 6. Interoperabiliade e Tarefas assíncronas.
  7. 7. wire-level
  8. 8. store and forward
  9. 9. and Publish Subscribe
  10. 10. Pointto Point
  11. 11. Topic/Content Based
  12. 12. shift vs @_
  13. 13. anycast
  14. 14. multiplexing
  15. 15. virtualhost
  16. 16. chaves vs metadata
  17. 17. “heartbeat”
  18. 18. Persistência, Prioridades e Confiança.
  19. 19. Na teoria, o protocolo /wire-level/ AMQP
  20. 20. Publisher message { Exchange Broker Bindings: [...] Queues: Consumer: message
  21. 21. Model Session Transport
  22. 22. Analogia utilizada na especificação do AMQP.
  23. 23. Uma mensagem AMQP é como uma mensagem de e-mail.
  24. 24. Fila de mensagens é como um mailbox.
  25. 25. Consumidor é como um leitor de e-mail, que pode buscar e apagar e-mails.
  26. 26. Exchange é como um MTA.
  27. 27. Routing Key é como o To:, Cc: ou Bcc:
  28. 28. Cada instancia do Exchange é como se fosse um processo MTA “separado”
  29. 29. O binding é como se fosse uma entrada de rota no MTA.
  30. 30. As diferenças.
  31. 31. Habilidade para criação em tempo de execução, de filas, exchanges e rotas.
  32. 32. Estudo de caso.
  33. 33. Topic Exchange.
  34. 34. Routing keys: sp.noticias, sp.tempo, rio.noticias, rio.tempo.
  35. 35. Binding Keys: sp.# e rio.# #.noticias e #.tempo
  36. 36. Estratégias para os consumidores.
  37. 37. http://www.flickr.com/photos/21569450@N06/3299124233/
  38. 38. Net::RabbitMQ
  39. 39. 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!");
  40. 40. Resolvi, rabiscar um módulo para simplificar aprender.
  41. 41. E também para saber um pouco mais sobre Devel::Declare.
  42. 42. mqconnect();
  43. 43. exchange { name => ‘foo’ };
  44. 44. publish { queue => ‘baz’, route => ‘route_baz’, message => ‘foo’ };
  45. 45. consume;
  46. 46. get { options => { routing_keys => ‘perl.#’; }};
  47. 47. tx;
  48. 48. rollback;
  49. 49. commit;
  50. 50. Veja o diretório de testes, para os exemplos.
  51. 51. use Net::RabbitMQ::Simple; mqconnect; publish { queue => ‘queuename’, message => ‘Hi there!’ }; = 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!");
  52. 52. TODO
  53. 53. http://github.com/maluco http://search.cpan.org/dist/Net- RabbitMQ-Simple/

×