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