twitter, apache camel e enterprise integration patterns
Post on 11-Nov-2014
857 Views
Preview:
DESCRIPTION
TRANSCRIPT
Apache Camel, Twitter e Enterprise Integration Patterns
@brunoborges05/07/2012#TDC2012
Agenda
● O que é o Camel (resumo)
● Enterprise Integration Patterns
● Scala DSL
● Camel Twitter
● Idéia
● Tentativa #1
● Reboot
● Demo
● Camel CDI
O que é?
Framework de IntegraçãoImplementação de EIPs
● Por que precisamos de Integração?
● Por que é tão difícil?
● Arquiteturas de Mensagens Assíncronas
● Como os padrões podem ajudar?
EIP ?!?!
Apache Camel: resumão
● Endpoints
● Consumers
● Producers
● Processors
Apache Camel
MQ A
MQ B
Filtrar Mensagens
Apache Camel
MQ A
MQ B
Filtrar Mensagens
From MQ A Filtrar To MQ B
Apache Camel
MQ A
MQ B
Filtrar Mensagens
from(mqA) filter() to(mqB)
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")}
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)
● Integrado com Spring
● Java Embedded, OSGi ServiceMix, JBoss ESB
Apache Camel
● Muito mais padrões
www.eaipatterns.com
camel.apache.org
Camel Twitter: a ideia inicial– Março 2009
http://blog.brunoborges.com.br/2009/03/leverage-eip-with-apache-camel-and.html
Camel Twitter: proposto para a ASF em 2009
● 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
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
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
Camel Twitter
● Features
● Enviar e ler DMs
● Tuitar (óbvio!)
● Pesquisar ● REST ou Streaming
● Timeline● Home● Mentions● Public● Retweets for me● User timeline
* a partir da versão 2.10.0
Camel Twitter
"jms:queue:tweetingQueue0" to """twitter://timeline/user? consumerKey=[s]& consumerSecret=[s]& accessToken=[s]& accessTokenSecret=[s]"""
"jms:queue:tweetingQueue1" to "twitter://timeline/user”
"twitter://timeline/home?type=polling&delay=5" ==> { to("log:homeTweets") }
"direct:doSearch" to "twitter://search?keywords=TDC2012"
"direct:doSearch" ==> { setHeader("CamelTwitterKeywords", "TDC2012") to("twitter://search")}
Criar um Status Update
Ler uma Timeline
Fazer buscas fixas ou dinâmicas
Camel CDI
* a partir da versão 2.10.0
Java EE 6
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
Obrigado
Bruno Borgesbruno.borges@oracle.com
brunoborges.com
@brunoborges
top related