Twitter, Apache Camel e Enterprise Integration Patterns

846 views

Published on

#TDC2012 edição Floripa

Published in: Technology
  • Be the first to comment

Twitter, Apache Camel e Enterprise Integration Patterns

  1. 1. Apache Camel, Twitter eEnterprise Integration Patterns @brunoborge 05/07/201 #TDC201
  2. 2. Agenda ● O que é o Camel (resumo) ● Enterprise Integration Patterns ● Scala DSL ● Camel Twitter ● Idéia ● Tentativa #1 ● Reboot ● Demo ● Camel CDI
  3. 3. O que é? Framework de Integração Implementação de EIPs
  4. 4. EIP ?!?! ● Por que precisamos de Integração? ● Por que é tão difícil? ● Arquiteturas de Mensagens Assíncronas ● Como os padrões podem ajudar?
  5. 5. Apache Camel: resumão ● Endpoints ● Consumers ● Producers ● Processors
  6. 6. Apache Camel Filtrar Mensagens MQ B MQ A
  7. 7. Apache Camel Filtrar Mensagens MQ B MQ A From MQ A Filtrar To MQ B
  8. 8. Apache Camel Filtrar Mensagens MQ B MQ A from(mqA) filter() to(mqB)
  9. 9. Scala DSL "direct:a" when(_.in == "<hello/>") to("direct:b") "direct:b" ==> { when(_.in == "<hallo/>") { to ("mock:c") } otherwise { to ("mock:e") } to ("mock:d") }
  10. 10. Apache Camel ● Enterprise Integration Patterns ● Roteamento de Mensagens ● DSLs: java, xml, scala ● Endpoints ● URIs ● Predicados e Expressões ● Uma penca de componentes ● JMS, HTTP, MINA, JDBC, FTP, WebService, EJB, Hibernate/JPA, IRC, JCR, AS/400, LDAP, Mail, Nagios, POP, Impressoras, Quartz, Restlet, RMI, RSS, Scalate, XMPP... (como falei: uma penca)
  11. 11. Apache Camel ● Muito mais padrõeswww.eaipatterns.comcamel.apache.org
  12. 12. Camel Twitter: a ideia inicial– Março 2009 http://blog.brunoborges.com.br/2009/03/leverage-eip-with-apache-camel-and.html
  13. 13. Camel Twitter: proposto para a ASF em2009 ● CAMEL-1520 ● https://issues.apache.org/jira/browse/CAMEL-1520 ● Apresentei no BarCamp da ApacheCon NA 2009 ● Conversas com committers do Camel na ApacheCon, me induziram a tentar fazer um componente mais abrangente p/ outras redes sociais ● Desafio: mesmo formato Endpoint URI e features de diferentes Redes Sociais (“social data providers”). Oferecer Facebook, Twitter, LinkedIn, Foursquare, e (o já morto) Google Buzz
  14. 14. Camel Social: tentativa mal sucedida ● Iniciado en 2010 ● Objetivo ● O objetivo do componente Camel Social era obter dados sociais de diferentes redes de uma forma padronizada para serem processados através de uma rota do Apache Camel ● Problema ● Dados Sociais são difíceis de serem padronizados ● Apesar de o Spring Social fazer um bom trabalho, não é uma API só para todas as redes ● http://code.google.com/p/camel-social ● Died in 2010
  15. 15. Camel Twitter: obrigado GitHub! ● Maio 2011 – Projeto reiniciado no GitHub ● http://github.com/brunoborges/camel-twitter ● Colaboração do Brett Meyer, o cara que finalizou o serviço ● @brettemeyer ● Foco somente no Twitter ● Brett adicionou suporte também para a API de Streaming do Twitter ● E muito mais
  16. 16. Twitter
  17. 17. Twitter
  18. 18. Twitter
  19. 19. Camel Twitter ● Features ● Enviar e ler DMs ● Tuitar (óbvio!) ● Pesquisar ● REST ou Streaming ● Timeline ● Home * a partir da versão 2.10.0 ● Mentions ● Public ● Retweets for me ● User timeline
  20. 20. Camel Twitter "jms:queue:tweetingQueue0" to """twitter://timeline/user?Criar um consumerKey=[s]& consumerSecret=[s]&Status Update accessToken=[s]& accessTokenSecret=[s]""" "jms:queue:tweetingQueue1" to "twitter://timeline/user”Ler uma "twitter://timeline/home?type=polling&delay=5" ==> {Timeline to("log:homeTweets") } "direct:doSearch" to "twitter://search?keywords=TDC2012"Fazer buscas "direct:doSearch" ==> {fixas ou setHeader("CamelTwitterKeywords", "TDC2012")dinâmicas to("twitter://search") }
  21. 21. Camel CDI Java EE 6 * a partir da versão 2.10.0
  22. 22. Camel CDI ● Features ● Permite usar o contexto CDI para injeção de dependências ● Não é mais necessário usar o Spring (exceto se quiser usar o XML DSL) ● Não é mais necessário usar um módulo Web (WAR) para inicializar o contexto do Camel (independente se usa ou não, Spring) ● Inicialização com @Singleton @Startup ● Ainda em “beta”, apesar de estar no 2.10.0
  23. 23. Obrigado Bruno Borges bruno.borges@oracle.com brunoborges.com @brunoborges

×