 |
CHAT
- JMS
com Cassio Camilo
Guapo > Bom
pessoal, já está na hora de iniciar o chat Guapo > o Cassio já está aqui conosco Guapo > alguém quer fazer alguma
pergunta? CassioCamilo
> Bom, gostaria de dizer que é um prazer estar aqui
com vocês, batendo um papo sobre a API JMS. FranklinSamir > Cassio, pode citar em
que tipo de aplicações vc usa JMS no dia dia? CassioCamilo > Franklin, ja tive
experiências, mas nada comercial. O uso ainda é pouco difundido. CassioCamilo > Mas está
crescendo. FranklinSamir > é por isto q
perguntei. CassioCamilo > Recentemente
tivemos o lançamento de um livro sobre o assunto (que foi divulgado na
MundoJava) e acho q agora as coisas começam a caminhar. Guapo >
eu sei de vários sistemas usando JMS em instituições
financeiras FranklinSamir > Vi poucas
aplicações reais. Eu diria até q JMS é das tecnologias mais conehcidas e menos
usadas. Guapo > os bancos usam bastante
porque muitos já usam há algum tempo frameworks de mensagens
FranklinSamir > Guapo, a única
aplicação q conheço usando JMS para valer é de um banco... o Sicredi
Guapo > trabalhei no HSBC e lá tínhamos
vários sistemas que usavam JMS FranklinSamir > Parte deste sistema do
HSBC é desenvolvido aqui do meu lado mas nunca tive contato.
CassioCamilo > Mas existem sim, grandes
sistemas. O diferencial é que ela é muito usada para EAI. E isso só vemos em
grandes coorporações... guest190532 > Parabens pela reportagem, está bem completa e acessível.
Guapo > o que acho interessante
na API é que trabalhar com Mensagens permite arquiteturas bastante robustas
Guapo > e bastante elegantes
Guapo > desacopladas
CassioCamilo > Isso é verdade! O
processo assincrono facilita muito as coisas! Guapo > Vejam o próprio exemplo que o Cassio deu no artigo
Guapo > se fosse feito com outra
tecnologia as coisas seriam muito mais complicadas, certo Cassio? CassioCamilo > Exatamente. Para se ter uma
idéia. O Provider já me fornece uma série de serviços... CassioCamilo > que facilitam a
vida do desenvolvedor. CassioCamilo > A questão da entrega das
mensagem, armazenamento, rollback. Tudo transparente. Guapo > O
artigo traz um exemplo de apuração de eleições em Urnas
CassioCamilo > Isso. Os diversos
usuário(eleitores) mandam o seu voto para uma determinada urma. Ao final da
eleição, um aplicativo acessa a Queue e busca os votos. RodrigoUrubatan > boa arquitetura :D e não fica pesando um servidor durante a
votação com o que só precisa processar depois :D CassioCamilo > Apesar da grande vantagem da API JMS, existe uma corrente que é
contra. Não por negar o
seu potencial.. CassioCamilo > Mas por acharem que a forma de programação. CassioCamilo > é muito estruturada para
o modelo Pub/Sub. RodrigoUrubatan >
mas o problema da API pode ser facilmente mascarado
utilizando alguma API de mais alto nivel para fazer a interface com JMS
tanquetav > Tenho uma
duvida quanto as tais Poison Messages ... tanquetav > Uma vez implementei via JMS um sistema para despachar email, caso
meu servidor de email estivesse com problema tanquetav > nao perderia a mensagem nem
travaria o cliente. tanquetav > Porem
quando dava erro no servidor ficava dando loop, a mensagem nao tinha um tempo de
espera tanquetav > Ai descobri que o
tempo de espera nao eh algo padronizado. Achei isso extremamaente chato
CassioCamilo > É verdade. Você pode
setar o timelife da mensagem, mas problemas podem ocorrer ainda! Com relação as
medidas tomadas pelo Provider, a coisa é mais complicada. CassioCamilo >
A especificação não estabelece um tempo padrão (como vc
disse) o q faz com q cada Vendor tenha um solução diferente. tanquetav > Acho que deveria ter mais
coisa em relacao a configuracoes das filas dentro do padrao, acho uma outra
grande falha da SUN tanquetav > como
esses timeout, numero de tentativa CassioCamilo > é... por um lado isso seria extremamente útil. Mas não podemos
esquecer que a idéia da SUN é de criar uma especificação apenas. E deixar que a
coisa corra livre! CassioCamilo > Isso
tem seu lado bom, mas com vemos, tem o ruim também! CassioCamilo
> Sobre a sua aplicação... quais foram as
dificuldades de implementação? tanquetav > Olha, foi bem tranquilo, ate pela simplicidade da funcionalidade
tanquetav > A unica coisa chata realmente foi que nao resolveu meu problema
cvillela > lembrando, claro, que o JCP
eh uma entidade aberta, e que se vc precisa _mesmo_ de alguma coisa inclusa na
spec, eh soh fazer barulho CassioCamilo > Bem lembrado cvillela! tanquetav > cvillela: para ser incluso
daqui uns 5 anos, provavelmente. Muito burocratico o JCP
cvillela > tanquetav: bom, nao vamos
entrar nesse merito ;) tanquetav > ok
cvillela > Com que implementacoes de JMS voces tem brincado?
tanquetav > eu testei o jbossmq e o da
weblogic CassioCamilo > Bom,
inicialmente usei a RI da própria SUN(iQM se não me engano!) para aprender.
Depois passei para o JBossQM. CassioCamilo > Como trabalho com o JBoss no dia a dia, já fui direto nele! cvillela >
nenhum relato do ActiveMQ? :) Guapo >
ActiveMQ? cvillela > guapo: activemq.codehaus.org
cvillela > posso
estar completamente enganado, mas acho que vai ser a implementacao de JMS do
Geronimo Guapo > vi o site,
interessante! RodrigoUrubatan > é o que
ta escrito no site do geronimo, que vão usar o activemq mesmo
CassioCamilo > A grande vantagem das
especificações é o fato de não ficarmos preso apenas a um AS. Usamos
Geronimo, depois JBoss, e por ai vamos! cvillela > (ainda bem, pq se ficassemos presos no JBoss, eu voltava pro
C++...) Guapo > acho interessante
também a possibilidade de integração com sistemas legados Guapo
> aliás, alguém já integrou via JMS co MQSeries ou
similar? cvillela > guapo: eu ja... foi
meu primeiro projeto em Java, alias :) cvillela > o MQSeries eh... digamos... temperamental, mas extremamente
robusto, depois que ta funcionando CassioCamilo > cvillela, vc notou alguma mudança de comportamento por parte da
aplicação, após a integração? cvillela > mudanca de comportamento? hmm, nao, pra falar a verdade ela ficou
mais calma :D cvillela > ta,
brincadeira de lado, eu nao entendi a pergunta CassioCamilo >
:) ! Boa. Assim, se você teve problemas de overhead na
comunicação dos sistemas? ou ficou tudo bem homogênio. cvillela > ah, o overhead nao foi suficiente pra causar nenhum problema, mas
que ele existe, existe... afinal JMS tem todo aquele bafafa de garantia de
entrega (e o MQSeries, mais ainda) que o SPL-SPC nao tem
Guapo > Na opinião de vcs, quais seriam
exemplos de aplicações para usar JMS? cvillela >
qualquer aplicacao tem um pouquinho de
assincronia CassioCamilo > Acho q em
primeiro lugar, aplicações de integração. Depois aquelas com necessidade de
desacoplamento e de fácil substituição das interfaces. tanquetav > Acho que uso de JMS em
aplicacoes envolvendo interacao com o usuario eh um pouco complicado
tanquetav > o usuario adora ver a
resposta NA HORA cvillela > tanquetav:
nem tanto... voce pode usar JMS como um jeito mais "EE" de fazer Futures
RodrigoUrubatan > o
usuário adora ver respostas na hora, é verdade cvillela >
explicando um pouco melhor... queries sao sempre síncronas, mas as atualizacoes podem ser assincronas, e a aplicacao
só "espera"
por ela quando alguma query esta envolvida cvillela > (claro, eh muito mais facil
falar do que fazer, mas o Eclipse, por exemplo, usa isso pra todo lado na versao
3) tanquetav > acharia excelente usar
JMS para relatorios pesados tanquetav > Ate para evitar uma penca de relatorios pesados simultaneamente no
servidor CassioCamilo > é possível tirar proveito do "assincronismo" para QUASE tudo. Acho
também q para determinadas aplicações, os usuário, não querem esperar pelo
processamento de determinada operação. Querem apenas a resposta. Essa pode vir
na hora, ou alguns minutos depois. CassioCamilo > O leque para se
usar é muito grande! Acho q o proveito ficara ainda maior quando mais
atribuições forem feitas ao Provider. Como é o caso do Container EJB. cvillela > hmm, alias, nao sei se ja
levantaram essa questao cvillela > mas voces nao acham JMS uma api "pesada"? tanquetav
> Eu nao acho nao Guapo > A API? acho que não, mas o provider... Guapo >
você acha villela? CassioCamilo >
Hmm, não vejo muito assim não... Até pq a API é bem
enxuta. cvillela > pesado no sentido de
"dificil de testar" tanquetav > Acho
que independente da API, a propria natureza assíncrona do negócio é um empecilho tanquetav > fazer um unit test deve ser
praticamente inviavel Guapo > hhmmm,
entendi tanquetav > confiar num sleep e
esperar a resposta de um MDB por exemplo, é sem noção
CassioCamilo > Talvez o processo de
homologação das aplicações se torne complicado, mas o teste não. Depois de
armado o terreno, acho que fica tranquilo. cvillela > unit test ate que nao é difícil cvillela >
mas integration test é bem mais chato
CassioCamilo > Os testes de integração
seriam um pouco complicado mesmo. CassioCamilo > Mas isso tende a melhorar! Vale lembrar que a API já está a um
tempo no mercado e só agora vem ganhando admiradores, ou despertando o interesse
para concorrentes e melhorias! Guapo > OK
pessoal, estamos chegando ao fim do horário do chat Guapo >
Gostaria de agradecer a participação de todos
CassioCamilo > Gostaria somente de
dizer obrigado a todos. Qualquer dúvida estaremos por perto! Guapo > Obrigado
Cassio CassioCamilo > Foi um prazer.
|
 |