Java Message Service (JMS)

Moçada, sou iniciante em JMS e tenho visto muito por aí sobre este tema, tentei dar umas fuçadas por aí pesquisando, mas até agora ainda não entendi nada de claro sobre o que realmente é o JMS.

Alguém poderia explicar o que é e como ele funciona.

Obrigado;

Douglas

Retirado de: http://java.sun.com/products/jms/
Mais info: http://www.google.com/search?q=JMS :wink:

[]'s

Eh Caio, eu vi isto tbém, acontece que não está bem claro o que está escrito lah, eu queria tipo alguma explicação de quem ja usa JMS e o que ele realmente faz.

Até

Fábio

Olá

Pessoas trocam mensagens escrevendo e lendo e-mails. Aplicações trocam mensagens através de MOM. Pera aí, não reaja ainda, não o estou ofendendo. Como está no Guia Essencial de Sobrevivência C/S do Orfali, “Every DAD needs a MOM”. Em outras palavras, every Distributed Application Development needs a Message Oriented Middleware.

Exemplos de MOM: IBM MQSeries, SonicMQ da Progress Software, FioranoMQ da Fiorano Software, M$MSMQ e mais os servidores de aplicações BEA WebLogic, JBoss, Oracle 9iAS. O MQ que aparece no nome dos primeiros (MOMs de verdade) significa Message Queue e mais ou menos já explica o que eles fazem. Um aplicativo A envia uma mensagem para o aplicativo B, o MOM recebe e põe numa fila. Assim que possível o aplicativo B receberá a mensagem. Como se percebe, não é necessário que os 2 aplicativos estejam no ar ao mesmo tempo. É como o e-mail, quando ligo a máquina é que os vejo. Os MOMs se responsabilizam por transmitir as mensagens e ainda garantem tolerância a falhas, balanceamento de carga, escalabilidade e suporte transacional. MOMs já são usados pelas grandes empresas há muito tempo. Mensagens via MOM são assíncronas como cartas ou e-mails. São diferentes das mensagens RPC que são como uma ligação telefônica que sendo síncrona precisa de alguém do outro lado.

Blá, blá, blá e nada de JMS, hein? Pois é, JMS ou Java Message Service é apenas uma API para escrever clientes para os sistemas de mensagens MOMs ou servidores de aplicações. Do mesmo modo que com JDBC se consegue acessar bases de dados relacionais e com JNDI se acessa serviços de diretório, com JMS se pode acessar aos MOMs. E como soe acontecer com aplicativos Java, a abstração provida pela API permite escrever clientes para sistemas de mensagens portáteis e independentes dos fornecedores de MOM.

A criação do JMS foi um esforço da industria. A turma de Java da Sun liderou a especificação mas fez tudo o mais próximo possível dos principais fornecedores de MOMs (agora chamados de JMS providers). O objetivo inicial era somente prover acesso aos MOMs. Depois alargaram os horizontes e hoje JMS serve para muitas coisas mais.

Há um livro meio antigo, mas muito bom, exclusivamente sobre JMS da O’Reilly de autoria de R.Monson-Haefel e D.Chappel. Quando eu era da área de EDI este livro era fundamental para mim. Hoje se fala de JMS dentro dos livros de EJBs que a partir da versão 2.0 incluiu os conceitos de Message-Driven Beans. Bem, mas isto já é papo para uma outra rodada de chopes.

[]s
Luca

Olá

Complementando um tiquinho:

O JMS trabalha com 2 tipos de mensagens que no linguajar da especificação JMS são os domínios das mensagens:[list]1. produtor e consumidor (publisher and subscribe, pub/sub);
2. ponto a ponto. (point to point, p2p)[/list]No primeiro caso pub/sub é como se fosse um broadcast um para muitos. O produtor envia uma mensagem para muitos consumidores através de um canal virtual chamado de tópico. Os consumidores que receberão as mensagens deverão subscrever o tópico. As mensagens são enviadas ao léu sem que os consumidores precisem solicita-las ou esperar por elas. É o modelo chamado de push based model

O segundo caso p2p (1 para 1) os clientes recebem e enviam mensagens tanto síncronas como assíncronas através de canais virtuais chamados de queues. É o modelo chamado de pull or polling based model.

Pena que não dá para fazer um Hello World porque além de ser meio grandinho precisaria de um JMS provider que poderia ser o JOnAS - J2EE Open Application Server que é LGPL.

[]s
Luca

Estou entrando no aprendizado de JMS agora tambem.

Achei esses dois links que me ajudaram a abrir a cabeça:

Introdução à Java Message Service
https://www6.software.ibm.com/developerworks/education/j-jms/index.html

Implementando soluções JMS independente de fornecedor
http://www.ibm.com/developerworks/library/j-jmsvendor/?n-j-2282

Fica aqui como base de pesquisa.