integração de sistemas e jms assíncrono
TRANSCRIPT
![Page 1: Integração de Sistemas e JMS Assíncrono](https://reader031.vdocuments.net/reader031/viewer/2022013122/55a8835b1a28abee518b45fe/html5/thumbnails/1.jpg)
INTEGRAÇÃO DE SISTEMAS
Uma visão geral sobre astecnologias disponíveis emJava para várias formas deintegração de sistemas
![Page 2: Integração de Sistemas e JMS Assíncrono](https://reader031.vdocuments.net/reader031/viewer/2022013122/55a8835b1a28abee518b45fe/html5/thumbnails/2.jpg)
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)
![Page 3: Integração de Sistemas e JMS Assíncrono](https://reader031.vdocuments.net/reader031/viewer/2022013122/55a8835b1a28abee518b45fe/html5/thumbnails/3.jpg)
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
![Page 4: Integração de Sistemas e JMS Assíncrono](https://reader031.vdocuments.net/reader031/viewer/2022013122/55a8835b1a28abee518b45fe/html5/thumbnails/4.jpg)
JAVA MESSAGE SERVICE (JMS)
Desvantagens:
- Não recomendado para integração não-Java (ex: software legado)
- Requer suporte a integração message-based
![Page 5: Integração de Sistemas e JMS Assíncrono](https://reader031.vdocuments.net/reader031/viewer/2022013122/55a8835b1a28abee518b45fe/html5/thumbnails/5.jpg)
JAVA EE CONNECTOR ARCHITECTURE (JCA)
Benefícios:
- Expoem os resources de uma forma genérica/alto-nível (via API)
![Page 6: Integração de Sistemas e JMS Assíncrono](https://reader031.vdocuments.net/reader031/viewer/2022013122/55a8835b1a28abee518b45fe/html5/thumbnails/6.jpg)
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
![Page 7: Integração de Sistemas e JMS Assíncrono](https://reader031.vdocuments.net/reader031/viewer/2022013122/55a8835b1a28abee518b45fe/html5/thumbnails/7.jpg)
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
![Page 8: Integração de Sistemas e JMS Assíncrono](https://reader031.vdocuments.net/reader031/viewer/2022013122/55a8835b1a28abee518b45fe/html5/thumbnails/8.jpg)
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
![Page 9: Integração de Sistemas e JMS Assíncrono](https://reader031.vdocuments.net/reader031/viewer/2022013122/55a8835b1a28abee518b45fe/html5/thumbnails/9.jpg)
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 simplesmenterepresentar um CRUD na aplicação
- Suporta JSON para mensagens
![Page 10: Integração de Sistemas e JMS Assíncrono](https://reader031.vdocuments.net/reader031/viewer/2022013122/55a8835b1a28abee518b45fe/html5/thumbnails/10.jpg)
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
![Page 11: Integração de Sistemas e JMS Assíncrono](https://reader031.vdocuments.net/reader031/viewer/2022013122/55a8835b1a28abee518b45fe/html5/thumbnails/11.jpg)
REMOTE METHOD INVOCATION (JAVA/RMI)
Benefícios:
- Orientado a objetos. RMI pode passar objetos completos comoargumentos e retornar valores
- Objetos são passados por valor. O cliente ou servidor podereconstituir os objetos facilmente
- O tipo de dado pode ser qualquer objeto Java (Serializable)
![Page 12: Integração de Sistemas e JMS Assíncrono](https://reader031.vdocuments.net/reader031/viewer/2022013122/55a8835b1a28abee518b45fe/html5/thumbnails/12.jpg)
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.*
![Page 13: Integração de Sistemas e JMS Assíncrono](https://reader031.vdocuments.net/reader031/viewer/2022013122/55a8835b1a28abee518b45fe/html5/thumbnails/13.jpg)
O QUE VEREMOS AGORA?
Antes de partimos para um hands-on com JMS e processamentoassíncrono, veremos mais alguns detalhes sobre JMS
![Page 14: Integração de Sistemas e JMS Assíncrono](https://reader031.vdocuments.net/reader031/viewer/2022013122/55a8835b1a28abee518b45fe/html5/thumbnails/14.jpg)
[JMS] MESSAGES
- Uma mensagem é uma unnidade de dados que é enviada por umprocesso para a mesma ou diferente máquina
- Uma mensagem pode ser um texto básico (String) ou uma estruturamais complexa (HashMap, por exemplo)
- A restrição é que as mensagens devem ser Serializable
![Page 15: Integração de Sistemas e JMS Assíncrono](https://reader031.vdocuments.net/reader031/viewer/2022013122/55a8835b1a28abee518b45fe/html5/thumbnails/15.jpg)
[JMS] MESSAGE-ORIENTED MIDDLEWARE
- Message-Oriented Middleware (MOM) é uma lista de serviçosserver-based usados para suportar envio e recebimento de msgs
- É a infraestrutura do MOM que provê mecanismos para a aplicaçãocriar, enviar e receber mensagens
- ActiveMQ é um MOM
![Page 16: Integração de Sistemas e JMS Assíncrono](https://reader031.vdocuments.net/reader031/viewer/2022013122/55a8835b1a28abee518b45fe/html5/thumbnails/16.jpg)
[JMS] COMMUNICATION MODES
Synchronous:
- O requisitor tem o processo bloqueado até que a resposta (outimeout) é recebida
- Como o volume de tráfico aumenta, mais bandwidth é requerida, ea necessidade de mais hardware se torna crítica
- Quando a capacidade de processamento é excedida, a oportunidadede processar uma informação é tipicamente perdida
![Page 17: Integração de Sistemas e JMS Assíncrono](https://reader031.vdocuments.net/reader031/viewer/2022013122/55a8835b1a28abee518b45fe/html5/thumbnails/17.jpg)
[JMS] COMMUNICATION MODES
Asynchronous:
- As partes estão no mesmo nível e podem enviar e recebermensagens a vontade
- Comunicação assíncrona não requer reconhecimento de mensagensem tempo real; o requisitor pode continuar com outro processamentouma vez que ele já enviou a mensagem
![Page 18: Integração de Sistemas e JMS Assíncrono](https://reader031.vdocuments.net/reader031/viewer/2022013122/55a8835b1a28abee518b45fe/html5/thumbnails/18.jpg)
[JMS] MESSAGE-DRIVEN BEAN
- Um message-driven bean (MDB) é um componente stateless que éinvocado pelo container EJB (ou um agente do Spring) quando umamensagem JMS entra em um destino (queue ou topic) em que o beanfoi 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
![Page 19: Integração de Sistemas e JMS Assíncrono](https://reader031.vdocuments.net/reader031/viewer/2022013122/55a8835b1a28abee518b45fe/html5/thumbnails/19.jpg)
![Page 20: Integração de Sistemas e JMS Assíncrono](https://reader031.vdocuments.net/reader031/viewer/2022013122/55a8835b1a28abee518b45fe/html5/thumbnails/20.jpg)
![Page 21: Integração de Sistemas e JMS Assíncrono](https://reader031.vdocuments.net/reader031/viewer/2022013122/55a8835b1a28abee518b45fe/html5/thumbnails/21.jpg)
#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