Giter VIP home page Giter VIP logo

apache-camel-rota's Introduction

Apache Camel Rota - Estudos 🐪

Repositório destinado para o estudo sobre Apache Camel e construção de rotas.

  1. Sobre o Apache Camel

Essencialmente, o Apache Camel é um roteador (routing engine), ou seja o Camel roteia os dados entre dois endpoints. Cabe ao programador definir a origem dos dados (from), o seu destino (to), e a forma com a qual ele será processado (mediation engine).

Exemplo de FROM(Origem) e TO(Destino)

   from("file:pedidos?noop=true"). // a origem de onde o Apache Camel irá buscar os dados
   to("file:saida"); // o destino o qual após ele ser processado ele irá nos dar a saída, neste caso, estou fazendo uma transferência de arquivo. 									                      

Um dos princípios fundamentais do Camel é que ele não determina o tipo de dado que precisa ser transacionado. Este alto nível de abstração facilita a interação com vários sistemas porque aproveita-se a mesma API, independentemente do protocolo ou tipo de dado utilizado.

Um resumão do que é o Camel é:

O Camel é uma máquina de roteamento, onde você fala de onde vêm os dados e para onde vão e ele faz alguma coisa no meio. Camel é uma biblioteca em que você pode utilizar standalone, ou seja, separado, ou integrar com algum projeto existente.


2. Utilizando a Camel DSL

A domain-specific language (DSL) do Camel suporta linguagens como Java, Scala, Groovy e também permite que regras de roteamento sejam especificadas em XML. O objetivo da DSL é permitir que o desenvolvedor se concentre no negócio e não na ferramenta de integração.

public class RotaPedidos {

	public static void main(String[] args) throws Exception {

		CamelContext context = new DefaultCamelContext();
		context.addRoutes(new RouteBuilder() {

			@Override
			public void configure() throws Exception {
				
				from("file:pedidos?noop=true").
				to("file:saida");
				
			}
            
		context.start();
		Thread.sleep(20000);
		context.stop();
		});
	}	
}

Dentro do método configure é a onde deve ser implementada toda lógica da rota com base nos métodos from() e to(). Ao executar o método main, os arquivos do diretório pedidos serão transferidos para o diretório saida.


Rotas

No Camel, as rotas interligam os endpoints determinados pelos métodos from() e to(), sendo origem e o destino, respectivamente. O paramêtro desses metódos são fornecidos atráves de URIs de acordo com o componente usado.

URI

Identificador de Recursos Universal, como diz o próprio nome, é o identificador do recurso. Pode ser uma imagem, uma página, etc, pois tudo o que está disponível na internet precisa de um identificador único para que não seja confundido.

Vamos usar o exemplo em nosso exemplo de como está acontecendo essa mágica da URI, beleza?! Utilizando como parâmetro do método from() do Bloco 1, podemos ver a seguinte estrutura:

  • file: componente do próprio camel
  • pedidos?: nosso paramêtro
  • noop=true: opção (busca os arquivos do diretório e não os apaga durante o processo)

  • Todas as URIs seguem o mesmo template: componente:parametros?opções. O primeiro elemente vai ser o responsável de referência o componente o qual estamos usando para podermos ler os dados na entrada da rota, e com base nas especificaçoes dele, são definidos os parâmetros e as opções.

    Componentes

    apache-camel-rota's People

    Contributors

    salmoel avatar

    Stargazers

    samuel verneck avatar

    Watchers

     avatar

    Recommend Projects

    • React photo React

      A declarative, efficient, and flexible JavaScript library for building user interfaces.

    • Vue.js photo Vue.js

      🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

    • Typescript photo Typescript

      TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

    • TensorFlow photo TensorFlow

      An Open Source Machine Learning Framework for Everyone

    • Django photo Django

      The Web framework for perfectionists with deadlines.

    • D3 photo D3

      Bring data to life with SVG, Canvas and HTML. 📊📈🎉

    Recommend Topics

    • javascript

      JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

    • web

      Some thing interesting about web. New door for the world.

    • server

      A server is a program made to process requests and deliver data to clients.

    • Machine learning

      Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

    • Game

      Some thing interesting about game, make everyone happy.

    Recommend Org

    • Facebook photo Facebook

      We are working to build community through open source technology. NB: members must have two-factor auth.

    • Microsoft photo Microsoft

      Open source projects and samples from Microsoft.

    • Google photo Google

      Google ❤️ Open Source for everyone.

    • D3 photo D3

      Data-Driven Documents codes.