Apache Camel – Tutorial para iniciantes

apache-camel-logo

Apache Camel é uma implementação open source dos famosos Enterprise Integration Patterns. Camel é um motor de Roteamento e Mediação que facilita o vida dos desenvolvedores na criação e mediação de regras em uma variedade imensa de linguagens (DSL) como Java, Spring/XML, Scala etc.

Neste tutorial pretendo explorar com um exemplo simples o funcionameto do Apache Camel, onde uma classe envia mensagens para uma fila ActiveMQ (origemQueue) e Camel as roteia para outra fila ActiveMQ (destinoQueue).

Rota

Resumidamente uma rota é a ligação entre dois endpoints e um processador.

Como escrever uma rota

Podemos escrever uma rota de duas formas:

  • Código Java (DSL Java) através de API fornecida por Camel
  • XML

Enviando mensagens para uma fila ActiveMQ


 import javax.jms.Connection;
 import javax.jms.MessageProducer;
 import javax.jms.Queue;
 import javax.jms.Session;
import org.apache.activemq.ActiveMQConnectionFactory;
public class ProducerTeste {
public static void main(String[] args) throws Exception {
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("failover:(tcp://localhost:61616)?timeout=1000");
Connection connection = factory.createConnection("admin", "admin");
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
 connection.start();
 Queue queue = session.createQueue("origemQueue");
 MessageProducer producer = session.createProducer(queue);
for (int i = 0; i < 100000; i++) {
producer.send(session.createTextMessage(i + " message"));
 System.out.println("Sent message " + i);
 // Thread.sleep(1000);
 }
 producer.close(); session.close(); connection.close();
 }
 }

Roteamento das mensagens com Camel

 import javax.jms.ConnectionFactory;
 import org.apache.activemq.ActiveMQConnectionFactory;
 import org.apache.camel.CamelContext;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.jms.JmsComponent;
 import org.apache.camel.impl.DefaultCamelContext;
public final class CamelProducer {
public static void main(String args[]) throws Exception {
 CamelContext context = new DefaultCamelContext();
ConnectionFactory factory = new ActiveMQConnectionFactory("admin", "admin", "failover:(tcp://localhost:61616)?timeout=1000");
context.addComponent("test-jms", JmsComponent.jmsComponentAutoAcknowledge(factory));
 context.addRoutes(new RouteBuilder() {
 public void configure() {
 from("test-jms:queue:origemQueue").to("test-jms:queue:destinoQueue");
 }
 });
ProducerTemplate template = context.createProducerTemplate();
 context.start();
 for (int i = 0; i < 1000000; i++) {
 template.sendBody("test-jms:queue:destinoQueue", "Test Message: " + i);
 System.out.println("Sent message " + i);
}
Thread.sleep(1000);
 context.stop();
 }
 }

Projeto

Download do projeto completo >>>aqui<<<



Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s