Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Integração de Sistemas e JMS Assíncrono

699 views

Published on

Apresentação sobre tecnologias para integração de sistemas em Java e JMS assíncrono.
Além de descrição, benefícios, desvantagens e cenário aplicável para cada tecnologia, no final há links para o código-fonte da implementação de JMS assíncrono.

Published in: Technology
  • Be the first to comment

Integração de Sistemas e JMS Assíncrono

  1. 1. INTEGRAÇÃO DE SISTEMAS Uma visão geral sobre as tecnologias disponíveis em Java para várias formas de integração de sistemas
  2. 2. O QUE VEREMOS POR AQUI O que é, benefícios e desvantagens para: - Java Message Service (JMS) - Java EE Connector Architecture (JCA) - Java API for XML-based Web Services (JAX-WS) - Java API for RESTful Web Services (JAX-RS) - Remote Method Invocation (Java/RMI)
  3. 3. JAVA MESSAGE SERVICE (JMS) Benefícios: - Fácil integração de sistemas incompatíveis - Mensagens síncronas:  Suporta reconhecimento de mensagens (entrega garantida)  Suporte para transações (via JTA) - Mensagens assíncronas:  Como o volume de transações aumenta, asynchronous messaging is better  Mensagem assíncrona é menos afetada por falhas em hardware, software e network  Quando a capacidade de processamento é excedida, informações não são perdidas
  4. 4. JAVA MESSAGE SERVICE (JMS) Desvantagens: - Não recomendado para integração não-Java (ex: software legado) - Requer suporte a integração message-based
  5. 5. JAVA EE CONNECTOR ARCHITECTURE (JCA) Benefícios: - Expoem os resources de uma forma genérica/alto-nível (via API)
  6. 6. JAVA EE CONNECTOR ARCHITECTURE (JCA) Desvantagens: - Requer uma implementação de um resource vendor’s connector - Aumenta o acoplamento entre a aplicação e o sistema legado
  7. 7. JAVA API FOR XML-BASED WEB SERVICES (JAX-WS) Benefícios: - Endereça os requisitos de enterprise QoS para segurança  WS-Security  Reliability - Suporte para as camadas de transporte HTTP/HTTPS e SMTP
  8. 8. JAVA API FOR XML-BASED WEB SERVICES (JAX-WS) Desvantagens: - Somente XML (alguns workarounds disponíveis, mas nada oficial) - Overhead do envelope SOAP/wrapper (caro para transportar) - Sem suporte direto em Java EE para comunicação assíncrona
  9. 9. JAVA API FOR RESTFUL WEB SERVICES (JAX-RS) Benefícios: - Não é necessário configurações quando usado container Java EE 6+ - Usa anotações (no lugar dos tradicionais XMLs) - Métodos HTTP (POST, GET, PUT, DELETE) podem simplesmente representar um CRUD na aplicação - Suporta JSON para mensagens
  10. 10. JAVA API FOR RESTFUL WEB SERVICES (JAX-RS) Desvantagens: - Suporte somente para transporte via HTTP/HTTPS - Não suporta WS-Security automaticamente - Sem suporte direto em Java EE para comunicação assíncrona
  11. 11. REMOTE METHOD INVOCATION (JAVA/RMI) Benefícios: - Orientado a objetos. RMI pode passar objetos completos como argumentos e retornar valores - Objetos são passados por valor. O cliente ou servidor pode reconstituir os objetos facilmente - O tipo de dado pode ser qualquer objeto Java (Serializable)
  12. 12. REMOTE METHOD INVOCATION (JAVA/RMI) Desvantagens: - Deve-se usar Java em objetos locais e remotos - Argumentos devem implementar Serializable ou herdar Remote  java.io.* e java.rmi.*
  13. 13. O QUE VEREMOS AGORA? Antes de partimos para um hands-on com JMS e processamento assíncrono, veremos mais alguns detalhes sobre JMS
  14. 14. [JMS] MESSAGES - Uma mensagem é uma unnidade de dados que é enviada por um processo para a mesma ou diferente máquina - Uma mensagem pode ser um texto básico (String) ou uma estrutura mais complexa (HashMap, por exemplo) - A restrição é que as mensagens devem ser Serializable
  15. 15. [JMS] MESSAGE-ORIENTED MIDDLEWARE - Message-Oriented Middleware (MOM) é uma lista de serviços server-based usados para suportar envio e recebimento de msgs - É a infraestrutura do MOM que provê mecanismos para a aplicação criar, enviar e receber mensagens - ActiveMQ é um MOM
  16. 16. [JMS] COMMUNICATION MODES Synchronous: - O requisitor tem o processo bloqueado até que a resposta (ou timeout) é recebida - Como o volume de tráfico aumenta, mais bandwidth é requerida, e a necessidade de mais hardware se torna crítica - Quando a capacidade de processamento é excedida, a oportunidade de processar uma informação é tipicamente perdida
  17. 17. [JMS] COMMUNICATION MODES Asynchronous: - As partes estão no mesmo nível e podem enviar e receber mensagens a vontade - Comunicação assíncrona não requer reconhecimento de mensagens em tempo real; o requisitor pode continuar com outro processamento uma vez que ele já enviou a mensagem
  18. 18. [JMS] MESSAGE-DRIVEN BEAN - Um message-driven bean (MDB) é um componente stateless que é invocado pelo container EJB (ou um agente do Spring) quando uma mensagem JMS entra em um destino (queue ou topic) em que o bean foi registrado - Um MDB é um message consumer (consumidor) - Um MDB deve implementar a interface javax.jms.MessageListener - O processamento assíncrono é feito através de MDBs - O método onMessage( ) de um bean é invocado quando o mesmo é invocado pelo container (ou Spring) para processar a mensagem
  19. 19. #PARTIU #HANDS-ON #JMS #ASYNC Todos os códigos estão disponíveis no GitHub: - JMS Assíncrono usando recursos de um Java EE server:  https://github.com/atilla8huno/jms-async-javaee - JMS Assíncrono usando Spring em um container server:  https://github.com/atilla8huno/jms-async-spring - JMS Assíncrono usando Spring em um ambiente desktop (Java SE):  https://github.com/atilla8huno/jms-async-spring-javase

×