twitter, apache camel e enterprise integration patterns

23
Apache Camel, Twitter e Enterprise Integration Patterns @brunoborge 05/07/201 #TDC201

Upload: bruno-borges

Post on 11-Nov-2014

857 views

Category:

Technology


2 download

DESCRIPTION

#TDC2012 edição Floripa

TRANSCRIPT

Page 1: Twitter, Apache Camel e Enterprise Integration Patterns

Apache Camel, Twitter e Enterprise Integration Patterns

@brunoborges05/07/2012#TDC2012

Page 2: Twitter, Apache Camel e Enterprise Integration Patterns

Agenda

● O que é o Camel (resumo)

● Enterprise Integration Patterns

● Scala DSL

● Camel Twitter

● Idéia

● Tentativa #1

● Reboot

● Demo

● Camel CDI

Page 3: Twitter, Apache Camel e Enterprise Integration Patterns

O que é?

Framework de IntegraçãoImplementação de EIPs

Page 4: Twitter, Apache Camel e Enterprise Integration Patterns

● Por que precisamos de Integração?

● Por que é tão difícil?

● Arquiteturas de Mensagens Assíncronas

● Como os padrões podem ajudar?

EIP ?!?!

Page 5: Twitter, Apache Camel e Enterprise Integration Patterns

Apache Camel: resumão

● Endpoints

● Consumers

● Producers

● Processors

Page 6: Twitter, Apache Camel e Enterprise Integration Patterns

Apache Camel

MQ A

MQ B

Filtrar Mensagens

Page 7: Twitter, Apache Camel e Enterprise Integration Patterns

Apache Camel

MQ A

MQ B

Filtrar Mensagens

From MQ A Filtrar To MQ B

Page 8: Twitter, Apache Camel e Enterprise Integration Patterns

Apache Camel

MQ A

MQ B

Filtrar Mensagens

from(mqA) filter() to(mqB)

Page 9: Twitter, Apache Camel e Enterprise Integration Patterns

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")}

Page 10: Twitter, Apache Camel e Enterprise Integration Patterns

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

Page 11: Twitter, Apache Camel e Enterprise Integration Patterns

Apache Camel

● Muito mais padrões

www.eaipatterns.com

camel.apache.org

Page 12: Twitter, Apache Camel e Enterprise Integration Patterns

Camel Twitter: a ideia inicial– Março 2009

http://blog.brunoborges.com.br/2009/03/leverage-eip-with-apache-camel-and.html

Page 13: Twitter, Apache Camel e Enterprise Integration Patterns

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

Page 14: Twitter, Apache Camel e Enterprise Integration Patterns

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

Page 15: Twitter, Apache Camel e Enterprise Integration Patterns

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

Page 16: Twitter, Apache Camel e Enterprise Integration Patterns

Twitter

Page 17: Twitter, Apache Camel e Enterprise Integration Patterns

Twitter

Page 18: Twitter, Apache Camel e Enterprise Integration Patterns

Twitter

Page 19: Twitter, Apache Camel e Enterprise Integration Patterns

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

Page 20: Twitter, Apache Camel e Enterprise Integration Patterns

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

Page 21: Twitter, Apache Camel e Enterprise Integration Patterns

Camel CDI

* a partir da versão 2.10.0

Java EE 6

Page 22: Twitter, Apache Camel e Enterprise Integration Patterns

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

Page 23: Twitter, Apache Camel e Enterprise Integration Patterns

Obrigado

Bruno [email protected]

brunoborges.com

@brunoborges