Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Net::RabbitMQ(::Simple)

1,729 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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/

×