Curso de Apache Camel
Atualmente é difícil encontrar uma aplicação que funcione de maneira isolada, sem depender de nenhuma outra funcionalidade externa. Queremos reaproveitar funcionalidades já existentes, que é a ideia principal do SOA. Em tempos de Cloud e SOA, a integração entre aplicações se tornou muito comum e faz parte do cotidiano do desenvolvedor.
Diante da necessidade de integrar aplicações, foram identificados alguns padrões de como resolver os problemas mais comuns na integração. Os Enterprise Integration Patterns definem uma série de boas práticas que foram documentadas no livro com o mesmo nome, que descreve as vantagens e desvantagens de cada padrão e define um vocabulário comum a ser seguido.
O Apache Camel, como framework de integração, implementa a maioria dos padrões de integração. Um framework de integração ajuda a diminuir a complexidade e o impacto dessas integrações. Em vez de escrever código de integração na mão, usamos componentes para isso.
Essencialmente, Camel é um roteador (routing engine), ou seja o Camel roteia os dados entre dois endpoints. Um endpoint é um serviço web ou um banco de dados, podendo ser um arquivo ou file JMS. Em geral, é um ponto onde pegamos ou enviamos dados. A tarefa do desenvolvedor é configurar, por meio de um Builder, os endpoints e as regras de roteamento. O desenvolvedor decide de onde vem as mensagens (from()), para onde enviar (to()) e o que fazer com a mensagem no meio desse processo (mediation engine).
1° Qual frase abaixo não caracteriza o Camel? 📝
-
Essencialmente o Apache Camel é um roteador (routing engine).
-
Apache Camel ajuda a diminuir a complexidade e o impacto nas integrações entre sistemas.
-
Apache Camel implementa a maioria dos padrões de integração, sempre seguindo boas práticas.
✅ Apache Camel implementa os padrões de web services, com SOAP e WSDL.
2° O que devemos colocar no lugar de //aqui, para criar uma nova rota? 📝
public class RotaPedidos {
public static void main(String[] args) throws Exception {
CamelContext context = new DefaultCamelContext();
context.addRoutes(
//aqui
);
context.start();
Thread.sleep(20000);
context.stop();
}
}
✅ A
new RouteBuilder() {
@Override
public void configure() throws Exception {
from("file:pedidos").
to("file:saida");
}
}
- B
new RouteBuilder() {
@Override
public void config() {
from("file:pedidos").
to("file:saida");
}
}
- C
new Builder() {
@Override
public void configure() throws Exception {
from("file:pedidos").
to("file:saida");
}
}
- D
new RoutesBuilder() {
@Override
public void configure() throws Exception {
from("file:pedidos").
to("file:saida");
}
}
3° Qual é a sintaxe correta para acessar a id da mensagem pela Camel Expression Language? 📝
- {{id}}
- @id
- #{id}
- ${id}
- $id
4° Qual estilo de integração estamos usando? 📝
- Shared Database
✅ File Transfer
-
Remote Procedure Call
-
Messaging
5° O que significa Marshal e Unmarshal no contexto de integração de sistemas? 📝
-
O processo de gravação de dados de um objeto no banco é chamado de marshal. O processo contrário é chamado unmarshal.
-
O processo de alteração de dados para aplicar uma série de cálculos é marshal. Desfazer essas alterações é chamado de unmarshal.
✅ O processo de transformação de dados em memória em um outro formato é chamado de marshal. O contrário é chamado de unmarshal.
- O processo de otimização de dados de um format